zhaomiao 3 years ago
parent
commit
ffc27a4fd2
36 changed files with 369 additions and 179 deletions
  1. 194 81
      package-lock.json
  2. 3 1
      package.json
  3. 5 3
      src/App.vue
  4. 1 1
      src/assets/css/benchmarkingSys/internationalBenchmark.scss
  5. 1 1
      src/assets/css/benchmarkingSys/projectBenchmark.scss
  6. 1 1
      src/assets/css/benchmarkingSys/projectBenchmarkParticulars.scss
  7. 1 1
      src/assets/css/benchmarkingSys/propertBenchmark.scss
  8. 1 1
      src/assets/css/benchmarkingSys/propertBenchmarkParticulars.scss
  9. 1 1
      src/assets/css/benchmarkingSys/yardBenchmarkParticulars.scss
  10. 1 1
      src/assets/css/healthManagement/healthAssessment.scss
  11. 1 1
      src/assets/css/lossBenchmarking/InterValueLineTable.scss
  12. 1 1
      src/assets/css/lossBenchmarking/fiveLossLineTable.scss
  13. 1 1
      src/assets/css/lossBenchmarking/fiveLossRates.scss
  14. 1 1
      src/assets/css/lossBenchmarking/fiveLossRatesHistogramChart.scss
  15. 1 1
      src/assets/css/lossBenchmarking/fiveLossRatesPieChart.scss
  16. 1 1
      src/assets/css/lossBenchmarking/interValue.scss
  17. 1 1
      src/assets/css/lossBenchmarking/lossRateAbandoned.scss
  18. 1 1
      src/assets/css/lossBenchmarking/lossRateAffected.scss
  19. 1 1
      src/assets/css/lossBenchmarking/lossRateFailure.scss
  20. 1 1
      src/assets/css/lossBenchmarking/lossRateMaintenance.scss
  21. 1 1
      src/assets/css/lossBenchmarking/lossRatePerformance.scss
  22. 1 2
      src/assets/css/performanceAnalysis/rankingCallThePolice.scss
  23. 1 1
      src/assets/css/performanceAnalysis/rankingCurveDeviationRate.scss
  24. 1 1
      src/assets/css/performanceAnalysis/rankingUtilization.scss
  25. 11 11
      src/assets/js/benchmarkingSys/performanceList.js
  26. 36 36
      src/assets/js/login.js
  27. 19 2
      src/layout/aside.vue
  28. 3 5
      src/layout/header.vue
  29. 2 0
      src/main.js
  30. 3 3
      src/router/index.js
  31. 2 2
      src/store/index.js
  32. 44 0
      src/utils/excelHelper.js
  33. 0 0
      src/utils/fbutton.vue
  34. 1 1
      src/views/benchmarkingSys/performanceList.vue
  35. 24 12
      src/views/healthManagement/healthManagement.vue
  36. 1 0
      vue.config.js

+ 194 - 81
package-lock.json

@@ -1710,16 +1710,6 @@
           "integrity": "sha1-/q7SVZc9LndVW4PbwIhRpsY1IPo=",
           "dev": true
         },
-        "ansi-styles": {
-          "version": "4.3.0",
-          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "color-convert": "^2.0.1"
-          }
-        },
         "cacache": {
           "version": "13.0.1",
           "resolved": "https://registry.npm.taobao.org/cacache/download/cacache-13.0.1.tgz?cache=0&sync_timestamp=1616431251047&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcacache%2Fdownload%2Fcacache-13.0.1.tgz",
@@ -1746,53 +1736,6 @@
             "unique-filename": "^1.1.1"
           }
         },
-        "chalk": {
-          "version": "4.1.1",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
-          "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "ansi-styles": "^4.1.0",
-            "supports-color": "^7.1.0"
-          }
-        },
-        "color-convert": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
-          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "color-name": "~1.1.4"
-          }
-        },
-        "color-name": {
-          "version": "1.1.4",
-          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
-          "dev": true,
-          "optional": true
-        },
-        "has-flag": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
-          "dev": true,
-          "optional": true
-        },
-        "loader-utils": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz",
-          "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "big.js": "^5.2.2",
-            "emojis-list": "^3.0.0",
-            "json5": "^2.1.2"
-          }
-        },
         "source-map": {
           "version": "0.6.1",
           "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz",
@@ -1809,16 +1752,6 @@
             "minipass": "^3.1.1"
           }
         },
-        "supports-color": {
-          "version": "7.2.0",
-          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
-          "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "has-flag": "^4.0.0"
-          }
-        },
         "terser-webpack-plugin": {
           "version": "2.3.8",
           "resolved": "https://registry.npm.taobao.org/terser-webpack-plugin/download/terser-webpack-plugin-2.3.8.tgz",
@@ -1835,18 +1768,6 @@
             "terser": "^4.6.12",
             "webpack-sources": "^1.4.3"
           }
-        },
-        "vue-loader-v16": {
-          "version": "npm:vue-loader@16.2.0",
-          "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.2.0.tgz",
-          "integrity": "sha512-TitGhqSQ61RJljMmhIGvfWzJ2zk9m1Qug049Ugml6QP3t0e95o0XJjk29roNEiPKJQBEi8Ord5hFuSuELzSp8Q==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "chalk": "^4.1.0",
-            "hash-sum": "^2.0.0",
-            "loader-utils": "^2.0.0"
-          }
         }
       }
     },
@@ -2144,6 +2065,15 @@
       "integrity": "sha1-vxEWycdYxRt6kz0pa3LCIe2UKLY=",
       "dev": true
     },
+    "adler-32": {
+      "version": "1.2.0",
+      "resolved": "https://registry.nlark.com/adler-32/download/adler-32-1.2.0.tgz",
+      "integrity": "sha1-aj5r8KY5ALoVZSgIyxXGgT0aXyU=",
+      "requires": {
+        "exit-on-epipe": "~1.0.1",
+        "printj": "~1.1.0"
+      }
+    },
     "aggregate-error": {
       "version": "3.1.0",
       "resolved": "https://registry.npm.taobao.org/aggregate-error/download/aggregate-error-3.1.0.tgz",
@@ -3624,6 +3554,16 @@
         "url-to-options": "^1.0.1"
       }
     },
+    "cfb": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npm.taobao.org/cfb/download/cfb-1.2.0.tgz",
+      "integrity": "sha1-ak0IcrUl7WA0nh71H7Swv3Psqag=",
+      "requires": {
+        "adler-32": "~1.2.0",
+        "crc-32": "~1.2.0",
+        "printj": "~1.1.2"
+      }
+    },
     "chalk": {
       "version": "2.4.2",
       "resolved": "https://registry.npm.taobao.org/chalk/download/chalk-2.4.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchalk%2Fdownload%2Fchalk-2.4.2.tgz",
@@ -3964,6 +3904,22 @@
         "q": "^1.1.2"
       }
     },
+    "codepage": {
+      "version": "1.14.0",
+      "resolved": "https://registry.npm.taobao.org/codepage/download/codepage-1.14.0.tgz",
+      "integrity": "sha1-jL4lSBMjVZ19MHVxsP/5HnodL5k=",
+      "requires": {
+        "commander": "~2.14.1",
+        "exit-on-epipe": "~1.0.1"
+      },
+      "dependencies": {
+        "commander": {
+          "version": "2.14.1",
+          "resolved": "https://registry.nlark.com/commander/download/commander-2.14.1.tgz?cache=0&sync_timestamp=1621726670324&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcommander%2Fdownload%2Fcommander-2.14.1.tgz",
+          "integrity": "sha1-IjUSPjevjKPGXfRbAm29NXsBuao="
+        }
+      }
+    },
     "collection-visit": {
       "version": "1.0.0",
       "resolved": "https://registry.npm.taobao.org/collection-visit/download/collection-visit-1.0.0.tgz",
@@ -4416,6 +4372,15 @@
         }
       }
     },
+    "crc-32": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npm.taobao.org/crc-32/download/crc-32-1.2.0.tgz",
+      "integrity": "sha1-yy224puIUI4y2d0OwWk+e0Ghggg=",
+      "requires": {
+        "exit-on-epipe": "~1.0.1",
+        "printj": "~1.1.0"
+      }
+    },
     "create-ecdh": {
       "version": "4.0.4",
       "resolved": "https://registry.npm.taobao.org/create-ecdh/download/create-ecdh-4.0.4.tgz?cache=0&sync_timestamp=1596557456448&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcreate-ecdh%2Fdownload%2Fcreate-ecdh-4.0.4.tgz",
@@ -5889,6 +5854,11 @@
         }
       }
     },
+    "exit-on-epipe": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npm.taobao.org/exit-on-epipe/download/exit-on-epipe-1.0.1.tgz",
+      "integrity": "sha1-C92S6H1ShdJn2qgXHQ6wYVlolpI="
+    },
     "expand-brackets": {
       "version": "2.1.4",
       "resolved": "https://registry.npm.taobao.org/expand-brackets/download/expand-brackets-2.1.4.tgz",
@@ -6311,6 +6281,11 @@
         "schema-utils": "^2.5.0"
       }
     },
+    "file-saver": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npm.taobao.org/file-saver/download/file-saver-2.0.5.tgz?cache=0&sync_timestamp=1605790980036&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffile-saver%2Fdownload%2Ffile-saver-2.0.5.tgz",
+      "integrity": "sha1-1hz+LOBZ9BTYmendbUEH7iVnDDg="
+    },
     "file-type": {
       "version": "12.4.2",
       "resolved": "https://registry.nlark.com/file-type/download/file-type-12.4.2.tgz",
@@ -6478,6 +6453,11 @@
       "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=",
       "dev": true
     },
+    "frac": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npm.taobao.org/frac/download/frac-1.1.2.tgz",
+      "integrity": "sha1-PXT39keMiKG1AgMG10fcYxPHTQs="
+    },
     "fragment-cache": {
       "version": "0.2.1",
       "resolved": "https://registry.npm.taobao.org/fragment-cache/download/fragment-cache-0.2.1.tgz",
@@ -10954,6 +10934,11 @@
         "renderkid": "^2.0.4"
       }
     },
+    "printj": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npm.taobao.org/printj/download/printj-1.1.2.tgz",
+      "integrity": "sha1-2Q3rKXWoufYA+zoclOP0xTx4oiI="
+    },
     "process": {
       "version": "0.11.10",
       "resolved": "https://registry.npm.taobao.org/process/download/process-0.11.10.tgz",
@@ -12378,6 +12363,14 @@
         }
       }
     },
+    "ssf": {
+      "version": "0.11.2",
+      "resolved": "https://registry.npm.taobao.org/ssf/download/ssf-0.11.2.tgz",
+      "integrity": "sha1-C5lpiyN1SNCI/EPN8rcMGnUSwGw=",
+      "requires": {
+        "frac": "~1.1.2"
+      }
+    },
     "sshpk": {
       "version": "1.16.1",
       "resolved": "https://registry.npm.taobao.org/sshpk/download/sshpk-1.16.1.tgz",
@@ -13606,8 +13599,8 @@
     },
     "vue-json-excel": {
       "version": "0.3.0",
-      "resolved": "https://registry.npmjs.org/vue-json-excel/-/vue-json-excel-0.3.0.tgz",
-      "integrity": "sha512-FrSh0tVUpw4K+ilLO8g0Qp52eFJw/hkk3rZPTEKo9qVkJgVfQtZwzj3UWc5ACYxA3jLk9HtjK+f9xKHCN4Kgag==",
+      "resolved": "https://registry.npm.taobao.org/vue-json-excel/download/vue-json-excel-0.3.0.tgz",
+      "integrity": "sha1-csvkoARyAlntxlVVo/ByGYz3kUY=",
       "requires": {
         "downloadjs": "^1.4.7"
       }
@@ -13633,6 +13626,87 @@
         }
       }
     },
+    "vue-loader-v16": {
+      "version": "npm:vue-loader@16.2.0",
+      "resolved": "https://registry.npm.taobao.org/vue-loader/download/vue-loader-16.2.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue-loader%2Fdownload%2Fvue-loader-16.2.0.tgz",
+      "integrity": "sha1-BGpTMI3Ufljv4g3ewe3sAnzjtG4=",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "chalk": "^4.1.0",
+        "hash-sum": "^2.0.0",
+        "loader-utils": "^2.0.0"
+      },
+      "dependencies": {
+        "ansi-styles": {
+          "version": "4.3.0",
+          "resolved": "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-4.3.0.tgz",
+          "integrity": "sha1-7dgDYornHATIWuegkG7a00tkiTc=",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "color-convert": "^2.0.1"
+          }
+        },
+        "chalk": {
+          "version": "4.1.1",
+          "resolved": "https://registry.nlark.com/chalk/download/chalk-4.1.1.tgz?cache=0&sync_timestamp=1618995384030&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fchalk%2Fdownload%2Fchalk-4.1.1.tgz",
+          "integrity": "sha1-yAs/qyi/Y3HmhjMl7uZ+YYt35q0=",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "ansi-styles": "^4.1.0",
+            "supports-color": "^7.1.0"
+          }
+        },
+        "color-convert": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npm.taobao.org/color-convert/download/color-convert-2.0.1.tgz",
+          "integrity": "sha1-ctOmjVmMm9s68q0ehPIdiWq9TeM=",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "color-name": "~1.1.4"
+          }
+        },
+        "color-name": {
+          "version": "1.1.4",
+          "resolved": "https://registry.npm.taobao.org/color-name/download/color-name-1.1.4.tgz",
+          "integrity": "sha1-wqCah6y95pVD3m9j+jmVyCbFNqI=",
+          "dev": true,
+          "optional": true
+        },
+        "has-flag": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npm.taobao.org/has-flag/download/has-flag-4.0.0.tgz",
+          "integrity": "sha1-lEdx/ZyByBJlxNaUGGDaBrtZR5s=",
+          "dev": true,
+          "optional": true
+        },
+        "loader-utils": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npm.taobao.org/loader-utils/download/loader-utils-2.0.0.tgz",
+          "integrity": "sha1-5MrOW4FtQloWa18JfhDNErNgZLA=",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "big.js": "^5.2.2",
+            "emojis-list": "^3.0.0",
+            "json5": "^2.1.2"
+          }
+        },
+        "supports-color": {
+          "version": "7.2.0",
+          "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-7.2.0.tgz?cache=0&sync_timestamp=1618561008172&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-7.2.0.tgz",
+          "integrity": "sha1-G33NyzK4E4gBs+R4umpRyqiWSNo=",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "has-flag": "^4.0.0"
+          }
+        }
+      }
+    },
     "vue-pdf": {
       "version": "4.2.0",
       "resolved": "https://registry.npm.taobao.org/vue-pdf/download/vue-pdf-4.2.0.tgz",
@@ -14409,6 +14483,16 @@
       "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
       "dev": true
     },
+    "wmf": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npm.taobao.org/wmf/download/wmf-1.0.2.tgz",
+      "integrity": "sha1-fRnWIQcaCMK9xrfmiKnENSmMwto="
+    },
+    "word": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npm.taobao.org/word/download/word-0.3.0.tgz",
+      "integrity": "sha1-hUIVfk+OhJ9KNjooiZLUdhLbmWE="
+    },
     "worker-farm": {
       "version": "1.7.0",
       "resolved": "https://registry.npm.taobao.org/worker-farm/download/worker-farm-1.7.0.tgz",
@@ -14505,6 +14589,35 @@
         "async-limiter": "~1.0.0"
       }
     },
+    "xlsx": {
+      "version": "0.17.0",
+      "resolved": "https://registry.nlark.com/xlsx/download/xlsx-0.17.0.tgz",
+      "integrity": "sha1-AoF2oBQJZ9zuGBfSIWeEYeR0gcg=",
+      "requires": {
+        "adler-32": "~1.2.0",
+        "cfb": "^1.1.4",
+        "codepage": "~1.14.0",
+        "commander": "~2.17.1",
+        "crc-32": "~1.2.0",
+        "exit-on-epipe": "~1.0.1",
+        "fflate": "^0.3.8",
+        "ssf": "~0.11.2",
+        "wmf": "~1.0.1",
+        "word": "~0.3.0"
+      },
+      "dependencies": {
+        "commander": {
+          "version": "2.17.1",
+          "resolved": "https://registry.nlark.com/commander/download/commander-2.17.1.tgz?cache=0&sync_timestamp=1621726670324&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcommander%2Fdownload%2Fcommander-2.17.1.tgz",
+          "integrity": "sha1-vXerfebelCBc6sxy8XFtKfIKd78="
+        },
+        "fflate": {
+          "version": "0.3.11",
+          "resolved": "https://registry.nlark.com/fflate/download/fflate-0.3.11.tgz?cache=0&sync_timestamp=1621791371905&other_urls=https%3A%2F%2Fregistry.nlark.com%2Ffflate%2Fdownload%2Ffflate-0.3.11.tgz",
+          "integrity": "sha1-LEQNcYD964GeZImNiFivMnsEKl0="
+        }
+      }
+    },
     "xtend": {
       "version": "4.0.2",
       "resolved": "https://registry.npm.taobao.org/xtend/download/xtend-4.0.2.tgz",

+ 3 - 1
package.json

@@ -17,6 +17,7 @@
     "element-ui": "^2.15.1",
     "express-jwt": "^6.0.0",
     "express-session": "^1.17.1",
+    "file-saver": "^2.0.5",
     "js-cookie": "^2.2.1",
     "jsonwebtoken": "^8.5.1",
     "moment": "^2.29.1",
@@ -27,7 +28,8 @@
     "vue-pdf": "^4.2.0",
     "vue-router": "^3.2.0",
     "vuescroll": "^4.17.3",
-    "vuex": "^3.4.0"
+    "vuex": "^3.4.0",
+    "xlsx": "^0.17.0"
   },
   "devDependencies": {
     "@vue/cli-plugin-babel": "~4.5.0",

+ 5 - 3
src/App.vue

@@ -1,5 +1,4 @@
 <template>
-
   <div
     id="app"
     :class="'mainTheme-' + this.themeName"
@@ -8,13 +7,15 @@
     element-loading-text="拼命加载中"
     element-loading-spinner="el-icon-loading"
   >
-  <router-view name="rally"></router-view>
+    <router-view name="rally"></router-view>
+    
     <el-container style="height: 100%">
       <el-header style="height: 60px; padding: 0 0px">
         <headers></headers>
       </el-header>
 
       <el-container class="fot">
+         
         <el-aside class="son" :style="this.asidez">
           <asiders></asiders>
         </el-aside>
@@ -26,7 +27,7 @@
   </div>
 </template>
 <script>
-import { mapGetters } from "vuex";
+import { mapGetters, mapMutations } from "vuex";
 import asiders from "@layout/aside";
 import headers from "@layout/header";
 import mains from "@layout/main";
@@ -39,6 +40,7 @@ export default {
     headers,
     mains,
   },
+  methods: {},
 };
 </script>
 <style lang="scss">

+ 1 - 1
src/assets/css/benchmarkingSys/internationalBenchmark.scss

@@ -1,6 +1,6 @@
 .box {
     width: 100%;
-    justify-content: space-around;
+    justify-content: flex-start;
     align-items: center;
     overflow: hidden;
   }

+ 1 - 1
src/assets/css/benchmarkingSys/projectBenchmark.scss

@@ -1,6 +1,6 @@
 .box {
     width: 100%;
-    justify-content: space-around;
+    justify-content: flex-start;
     align-items: center;
     overflow: hidden;
   }

+ 1 - 1
src/assets/css/benchmarkingSys/projectBenchmarkParticulars.scss

@@ -1,6 +1,6 @@
 .box {
     width: 100%;
-    justify-content: space-around;
+    justify-content: flex-start;
     align-items: center;
     overflow: hidden;
   }

+ 1 - 1
src/assets/css/benchmarkingSys/propertBenchmark.scss

@@ -1,7 +1,7 @@
 .box {
     width: 100%;
     display: flex;
-    justify-content: space-around;
+    justify-content: flex-start;
     align-items: center;
     overflow: hidden;
   }

+ 1 - 1
src/assets/css/benchmarkingSys/propertBenchmarkParticulars.scss

@@ -1,6 +1,6 @@
 .box {
     width: 100%;
-    justify-content: space-around;
+    justify-content: flex-start;
     align-items: center;
     overflow: hidden;
   }

+ 1 - 1
src/assets/css/benchmarkingSys/yardBenchmarkParticulars.scss

@@ -1,7 +1,7 @@
 
 .box {
     width: 100%;
-    justify-content: space-around;
+    justify-content: flex-start;
     align-items: center;
     overflow: hidden;
   }

+ 1 - 1
src/assets/css/healthManagement/healthAssessment.scss

@@ -1,7 +1,7 @@
 .box{
     width: 100%;
     display: flex;
-    justify-content: space-around;
+    justify-content: flex-start;
      align-items: center;
      overflow: hidden;
   }

+ 1 - 1
src/assets/css/lossBenchmarking/InterValueLineTable.scss

@@ -1,7 +1,7 @@
 .box{
     width: 100%;
     display: flex;
-    justify-content: space-around;
+    justify-content: flex-start;
      align-items: center;
      overflow: hidden;
 }

+ 1 - 1
src/assets/css/lossBenchmarking/fiveLossLineTable.scss

@@ -1,7 +1,7 @@
 .box{
     width: 100%;
     // display: flex;
-    justify-content: space-around;
+    justify-content: flex-start;
      align-items: center;
      overflow: hidden;
 }

+ 1 - 1
src/assets/css/lossBenchmarking/fiveLossRates.scss

@@ -1,7 +1,7 @@
 .box{
     width: 100%;
     display: flex;
-    justify-content: space-around;
+    justify-content: flex-start;
      align-items: center;
      overflow: hidden;
 }

+ 1 - 1
src/assets/css/lossBenchmarking/fiveLossRatesHistogramChart.scss

@@ -1,7 +1,7 @@
 .box{
     width: 100%;
 	display: flex;
-	justify-content: space-around;
+	justify-content: flex-start;
  	align-items: center;
  	overflow: hidden;
 }

+ 1 - 1
src/assets/css/lossBenchmarking/fiveLossRatesPieChart.scss

@@ -1,7 +1,7 @@
 .box {
     width: 100%;
     display: flex;
-    justify-content: space-around;
+    justify-content: flex-start;
     align-items: center;
     overflow: hidden;
 }

+ 1 - 1
src/assets/css/lossBenchmarking/interValue.scss

@@ -1,7 +1,7 @@
 .box{
     width: 100%;
     // display: flex;
-    justify-content: space-around;
+    justify-content: flex-start;
      align-items: center;
      overflow: hidden;
 }

+ 1 - 1
src/assets/css/lossBenchmarking/lossRateAbandoned.scss

@@ -1,7 +1,7 @@
 .box{
     width: 100%;
     display: flex;
-    justify-content: space-around;
+    justify-content: flex-start;
      align-items: center;
      overflow: hidden;
 }

+ 1 - 1
src/assets/css/lossBenchmarking/lossRateAffected.scss

@@ -1,7 +1,7 @@
 .box{
     width: 100%;
     display: flex;
-    justify-content: space-around;
+    justify-content: flex-start;
      align-items: center;
      overflow: hidden;
 }

+ 1 - 1
src/assets/css/lossBenchmarking/lossRateFailure.scss

@@ -1,7 +1,7 @@
 .box{
     width: 100%;
     display: flex;
-    justify-content: space-around;
+    justify-content: flex-start;
      align-items: center;
      overflow: hidden;
 }

+ 1 - 1
src/assets/css/lossBenchmarking/lossRateMaintenance.scss

@@ -1,7 +1,7 @@
 .box{
     width: 100%;
     display: flex;
-    justify-content: space-around;
+    justify-content: flex-start;
      align-items: center;
      overflow: hidden;
 }

+ 1 - 1
src/assets/css/lossBenchmarking/lossRatePerformance.scss

@@ -1,7 +1,7 @@
 .box{
     width: 100%;
     display: flex;
-    justify-content: space-around;
+    justify-content: flex-start;
      align-items: center;
      overflow: hidden;
 }

+ 1 - 2
src/assets/css/performanceAnalysis/rankingCallThePolice.scss

@@ -1,8 +1,7 @@
 .box{
     width: 100%;
     display: flex;
-    justify-content: space-around;
-     align-items: center;
+    justify-content: flex-start;
      overflow: hidden;
 }
 .searchBar{

+ 1 - 1
src/assets/css/performanceAnalysis/rankingCurveDeviationRate.scss

@@ -1,7 +1,7 @@
 .box{
     width: 100%;
     display: flex;
-    justify-content: space-around;
+    justify-content: flex-start;
      align-items: center;
      overflow: hidden;
 }

+ 1 - 1
src/assets/css/performanceAnalysis/rankingUtilization.scss

@@ -1,7 +1,7 @@
 .box{
     width: 100%;
     display: flex;
-    justify-content: space-around;
+    justify-content: flex-start;
      align-items: center;
      overflow: hidden;
 }

+ 11 - 11
src/assets/js/benchmarkingSys/performanceList.js

@@ -1,6 +1,6 @@
 
 import * as echarts from "echarts";
-//import excelHelper from "@/utils/excelHelper";
+import excelHelper from "@utils/excelHelper";
 export default {
   data() {
     return {
@@ -377,16 +377,16 @@ export default {
     filter_daynhgzssdl(cellValue) {
       return parseFloat(cellValue.daynhgzssdl).toFixed(2);
     },
-    // toExcel() {
-    //   let that = this;
-    //   if (this.tableid === "fc") {
-    //     excelHelper.exportExcel("fc_table", "fc数据", ".xls", true);
-    //   } else if (this.tableid === "pj") {
-    //     excelHelper.exportExcel("pj_table", "pj数据", ".xls", true);
-    //   } else if (this.tableid === "xl") {
-    //     excelHelper.exportExcel("xl_table", "xl数据", ".xls", true);
-    //   }
-    // },
+    toExcel() {
+      let that = this;
+      if (this.tableid === "fc") {
+        excelHelper.exportExcel("fc_table", "fc数据", ".xls", true);
+      } else if (this.tableid === "pj") {
+        excelHelper.exportExcel("pj_table", "pj数据", ".xls", true);
+      } else if (this.tableid === "xl") {
+        excelHelper.exportExcel("xl_table", "xl数据", ".xls", true);
+      }
+    },
     drawhistogram_fc(date,date2) {
       this.chartLine = echarts.init(document.getElementById("histogram_fc"));
       this.chartLine.clear();

+ 36 - 36
src/assets/js/login.js

@@ -1,39 +1,39 @@
-// import { mapMutations} from 'vuex'
-// export default {
-//   data() {
-//     return {
-//       loginForm:{
-//         username:'',
-//         password:'',
-//       }
+import { mapMutations} from 'vuex'
+export default {
+  data() {
+    return {
+      loginForm:{
+        username:'',
+        password:'',
+      }
       
-//     }
-//   },
-//   components: {
-//   },
-//   created() {
-//   },
+    }
+  },
+  components: {
+  },
+  created() {
+  },
   
-//   methods: {
+  methods: {
     
-//     ...mapMutations("user", ["SET_TOKEN"]),
-//     login(){
-//       let _this = this;
-//       var digital = new URLSearchParams();
-//       digital.append("username",this.loginForm.username),
-//       digital.append("password",this.loginForm.password),
-//       this.API.post("/admin/loginvue", digital).then((res) => {
-//        const {data,code} = res;
-//        if(code == 200){
-// 				this.SET_TOKEN({"token":data,"username":this.loginForm.username});
-// 				this.$message({
-//           message: '登陆成功',
-//           type: 'success'
-//         });
-//          this.$router.push('/'); // 跳转到首页
-// 			} else {
-//         this.$message.error('登录失败');// ui弹窗提示
-// 			}
-//       });
-//     }
-//   }}
+    ...mapMutations("user", ["SET_TOKEN"]),
+    login(){
+      let _this = this;
+      var digital = new URLSearchParams();
+      digital.append("username",this.loginForm.username),
+      digital.append("password",this.loginForm.password),
+      this.API.post("/admin/loginvue", digital).then((res) => {
+       const {data,code} = res;
+       if(code == 200){
+				this.SET_TOKEN({"token":data,"username":this.loginForm.username});
+				this.$message({
+          message: '登陆成功',
+          type: 'success'
+        });
+         this.$router.replace('/'); // 跳转到首页
+			} else {
+        this.$message.error('登录失败');// ui弹窗提示
+			}
+      });
+    }
+  }}

+ 19 - 2
src/layout/aside.vue

@@ -1,5 +1,7 @@
 <template>
   <el-menu
+     @mouseenter.native="open_o"
+     @mouseleave.native="close_s"
     default-active="1"
     class="el-menu-vertical-demo"
     @open="handleOpen"
@@ -11,6 +13,7 @@
     background-color="#545c64"
     text-color="#fff"
   >
+  <div>
     <el-menu-item index="0" @click="open">
       <i class="el-icon-s-operation"></i>
     </el-menu-item>
@@ -50,6 +53,7 @@
         <el-menu-item index="1-3-1">选项3-1</el-menu-item>
       </el-submenu>
     </el-submenu>
+    </div>
   </el-menu>
 </template>
 
@@ -64,16 +68,29 @@ export default {
   created() {},
   methods: {
     ...mapMutations(["changeZ","changeY"]),
+    
+    close_s(){
+      console.log("ooooo")
+      this.changeZ("width:1%");
+      this.changeY("width:99%");
+      this.isCollapse = "kik"
+    },
+    open_o(){
+      this.changeZ("width:7%");
+      this.changeY("width:93%");
+      this.isCollapse = null
+    },
     open() {
       if(this.isCollapse){
+        console.log("opopop")
         this.changeZ("width:7%");
         this.changeY("width:93%");
         this.isCollapse = null
 
       }else{
         this.isCollapse = "lko"
-        this.changeZ("width:4%");
-        this.changeY("width:96%");
+        this.changeZ("width:1%");
+        this.changeY("width:99%");
       }
     },
     handleOpen(key, keyPath) {},

+ 3 - 5
src/layout/header.vue

@@ -13,7 +13,7 @@
             font-weight: bold;
             color:#fff;
           "
-          >{{ username }}</span
+          >{{ name }}</span
         >
         <headPortrait style="margin: 8px"></headPortrait>
       </div>
@@ -31,13 +31,11 @@ export default {
     return {
       menuIndex: "1", // 菜单默认选中项
       menu: [], // 菜单数据
-      username: localStorage.getItem("username"),
+      name: localStorage.getItem("username"),
     };
   },
   created() {
-    this.name = this.username
-      ? this.username
-      : localStorage.getItem("username");
+    this.name = localStorage.getItem("username")
   },
   components: {
     menuZj,

+ 2 - 0
src/main.js

@@ -31,6 +31,8 @@ Vue.prototype.ECLZX = EClzx;
 import Get_PDF from '@tools/htmlToPdf'; // pdf导出
 Vue.prototype.Get_PDF = Get_PDF;
 
+import JsonExcel from 'vue-json-excel'//excel导出
+Vue.component('downloadExcel', JsonExcel)
 //时间格式转换
 import moment from 'moment';
 Vue.prototype.Moment = moment;

+ 3 - 3
src/router/index.js

@@ -77,9 +77,9 @@ const router = new VueRouter({
 //路由前置导航
 router.beforeEach((to, from, next) => {
   // 登录后登录处理办法
-  // if (to.path === '/login' && store.getters.authToken) {
-  //   next({ path: '/' })
-  // } else
+  if (to.path === '/login' && store.getters.authToken) {
+    next({ path: '/' })
+  } else
    if (to.matched.some(m => m.meta.requireAuth)) {    // 需要登录
     if (window.localStorage.authToken) {
       next()

+ 2 - 2
src/store/index.js

@@ -8,8 +8,8 @@ const state = {
   submitDDTag: false,   //提交 - 防抖动 - 针对快速请求问题的拦截机制
   loading: false,   //全局 - 加载中....
   themeName: "light",
-  z:"width:4%",
-  y:"width:96%"
+  z:"width:1%",
+  y:"width:99%"
 };
 //改变状态的方法
 const mutations = {

+ 44 - 0
src/utils/excelHelper.js

@@ -0,0 +1,44 @@
+import Vue from 'vue'
+import FileSaver from "file-saver";
+import XLSX from "xlsx";
+ 
+export default {
+    /**
+     * @param tableId 要导出的表格ID
+     * @param fileName 文件导出名称
+     * @param fileType 文件类型
+     * @param rawFlag - true 导出的内容只做解析,不进行格式转换
+     * @returns {*}
+     */
+    exportExcel(tableId,fileName,fileType,rawFlag) {
+        let fix = document.querySelector('.el-table__fixed');
+        let wb;
+        /* 判断要导出的节点中是否有fixed的表格,如果有,转换excel时先将该dom移除,然后append回去 */
+        if(fix){
+            wb = XLSX.utils.table_to_book(document.querySelector("#"+tableId).removeChild(fix),{raw:rawFlag});
+            document.querySelector("#"+tableId).appendChild(fix);
+        }else{
+            wb = XLSX.utils.table_to_book(document.querySelector("#"+tableId),{raw:rawFlag});
+        }
+        /* 获取二进制字符串作为输出 */
+        let wbout = XLSX.write(wb, {
+            bookType: "xlsx",
+            bookSST: true,
+            type: "array"
+        });
+        try {
+            FileSaver.saveAs(
+                //Blob 对象表示一个不可变、原始数据的类文件对象。
+                //Blob 表示的不一定是JavaScript原生格式的数据。
+                //File 接口基于Blob,继承了 blob 的功能并将其扩展使其支持用户系统上的文件。
+                //返回一个新创建的 Blob 对象,其内容由参数中给定的数组串联组成。
+                new Blob([wbout], { type: "application/octet-stream" }),
+                //设置导出文件名称
+                fileName + fileType
+            );
+        } catch (e) {
+            if (typeof console !== "undefined") console.log(e, wbout);
+        }
+        return wbout;
+    }
+}

+ 0 - 0
src/utils/fbutton.vue


+ 1 - 1
src/views/benchmarkingSys/performanceList.vue

@@ -75,7 +75,7 @@
             </el-form-item>
 
             <el-form-item>
-              <el-button type="primary">导出</el-button>
+              <el-button @click="toExcel" type="primary">导出</el-button>
             </el-form-item>
           </el-row>
         </el-form>

+ 24 - 12
src/views/healthManagement/healthManagement.vue

@@ -1,22 +1,21 @@
 <template>
-  <el-container>
-    <template>
-      <el-tabs v-model="activeName" type="card" @tab-click="handleClick" style="height: 100%; width: 99.8%">
+    <div>
+      <el-tabs v-model="activeName" type="card" @tab-click="handleClick" style="height: 100%; width: 100%">
         <el-tab-pane label="未确认缺陷" name="serial_1">
           <el-button class="qbhl" type="danger" @click="ignore_all_check">全部忽略</el-button>
           <el-button class="qbqr" type="danger" @click="affirm_all_check">全部确认</el-button>
-          <el-button class="fjlb" type="danger" @click="fj_all_list">风机列表</el-button>
-          <el-row style="width: 100%">
-            <el-col :span="2">
+          <!-- <el-button class="fjlb" type="danger" @click="fj_all_list">风机列表</el-button> -->
+          <div style="width: 100%" class="healthy">
+            <div class="healthy_z">
               <el-button size="medium" type="primary" icon="el-icon-menu" @click="weekfitness" style="margin: 33px 0px 33px 13px; width: 133px">7天健康趋势</el-button>
               <el-button size="medium" type="primary" icon="el-icon-s-grid" @click="monthfitness" style="margin: 33px 0px 33px 13px; width: 133px">30天健康趋势</el-button>
-            </el-col>
-            <el-col :span="22" v-loading="loading_line">
+            </div>
+            <div class="healthy_y" v-loading="loading_line">
               <div class="box">
                 <div id="fitnessRegulate" style="width: 100%; height: 300px"></div>
               </div>
-            </el-col>
-          </el-row>
+            </div>
+          </div>
           <template>
             <el-tabs v-model="contraryName" type="card" @tab-click="contraryClick" style="height: 100%; width: 100%">
               <el-tab-pane label="当日内推荐" name="contrary_1">
@@ -940,8 +939,7 @@
           </div>
         </el-card>
       </el-dialog>
-    </template>
-  </el-container>
+    </div>
 </template>
 <script>
 import healthManagement from "@assets/js/healthManagement/healthManagement";
@@ -950,4 +948,18 @@ export default healthManagement;
 
 <style lang="scss" scoped>
 @import '@assets/css/healthManagement/healthManagement.scss';
+.healthy{
+  display: flex;
+  flex-direction: row ;
+  width: 100%;
+  justify-content: space-between;
+}
+.healthy_z{
+display: flex;
+ flex-direction:column;
+ width:10%;
+}
+.healthy_y{
+  width:90%;
+}
 </style>

+ 1 - 0
vue.config.js

@@ -24,6 +24,7 @@ module.exports = {
       .set('@router', resolve('src/router'))
       .set('@store', resolve('src/store'))
       .set('@layout',resolve('src/layout'))
+      .set('@utils',resolve('src/utils'))
       .set('@jsonData', resolve('src/jsonData'));
     // 压缩图片
     if (IS_PROD) {