East hace 3 años
padre
commit
b91a7ed7eb

+ 261 - 19
package-lock.json

@@ -1122,6 +1122,12 @@
         "to-fast-properties": "^2.0.0"
       }
     },
+    "@gar/promisify": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.2.tgz",
+      "integrity": "sha512-82cpyJyKRoQoRi+14ibCeGPu0CwypgtBAdBhq1WfvagpCZNKqwXbKwXllYSMG91DhmG4jt9gN8eP6lGOtozuaw==",
+      "dev": true
+    },
     "@hapi/address": {
       "version": "2.1.4",
       "resolved": "https://registry.nlark.com/@hapi/address/download/@hapi/address-2.1.4.tgz",
@@ -1188,6 +1194,69 @@
       "integrity": "sha1-K1o6s/kYzKSKjHVMCBaOPwPrphs=",
       "dev": true
     },
+    "@npmcli/fs": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.0.0.tgz",
+      "integrity": "sha512-8ltnOpRR/oJbOp8vaGUnipOi3bqkcW+sLHFlyXIr08OGHmVJLB1Hn7QtGXbYcpVtH1gAYZTlmDXtE4YV0+AMMQ==",
+      "dev": true,
+      "requires": {
+        "@gar/promisify": "^1.0.1",
+        "semver": "^7.3.5"
+      },
+      "dependencies": {
+        "lru-cache": {
+          "version": "6.0.0",
+          "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+          "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+          "dev": true,
+          "requires": {
+            "yallist": "^4.0.0"
+          }
+        },
+        "semver": {
+          "version": "7.3.5",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
+          "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
+          "dev": true,
+          "requires": {
+            "lru-cache": "^6.0.0"
+          }
+        },
+        "yallist": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+          "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+          "dev": true
+        }
+      }
+    },
+    "@npmcli/move-file": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz",
+      "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==",
+      "dev": true,
+      "requires": {
+        "mkdirp": "^1.0.4",
+        "rimraf": "^3.0.2"
+      },
+      "dependencies": {
+        "mkdirp": {
+          "version": "1.0.4",
+          "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
+          "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+          "dev": true
+        },
+        "rimraf": {
+          "version": "3.0.2",
+          "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+          "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+          "dev": true,
+          "requires": {
+            "glob": "^7.1.3"
+          }
+        }
+      }
+    },
     "@simonwep/pickr": {
       "version": "1.7.4",
       "resolved": "https://registry.npmjs.org/@simonwep/pickr/-/pickr-1.7.4.tgz",
@@ -2177,6 +2246,16 @@
       "integrity": "sha1-vxEWycdYxRt6kz0pa3LCIe2UKLY=",
       "dev": true
     },
+    "aggregate-error": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz",
+      "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==",
+      "dev": true,
+      "requires": {
+        "clean-stack": "^2.0.0",
+        "indent-string": "^4.0.0"
+      }
+    },
     "ajv": {
       "version": "6.12.6",
       "resolved": "https://registry.nlark.com/ajv/download/ajv-6.12.6.tgz?cache=0&sync_timestamp=1631470871211&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fajv%2Fdownload%2Fajv-6.12.6.tgz",
@@ -3319,6 +3398,12 @@
         }
       }
     },
+    "clean-stack": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
+      "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==",
+      "dev": true
+    },
     "cli-cursor": {
       "version": "2.1.0",
       "resolved": "https://registry.nlark.com/cli-cursor/download/cli-cursor-2.1.0.tgz?cache=0&sync_timestamp=1629747481175&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcli-cursor%2Fdownload%2Fcli-cursor-2.1.0.tgz",
@@ -3631,34 +3716,97 @@
       }
     },
     "compression-webpack-plugin": {
-      "version": "9.0.0",
-      "resolved": "https://registry.npmjs.org/compression-webpack-plugin/-/compression-webpack-plugin-9.0.0.tgz",
-      "integrity": "sha512-V2KmQqaUkErPT+ZcUGHa8zWpIw1oTYaC7wjGewJm053GWAoY04GfU5B/NZ/JSz1eFp9MggMdLQpEHe1TJAQY1A==",
+      "version": "5.0.2",
+      "resolved": "https://registry.npmjs.org/compression-webpack-plugin/-/compression-webpack-plugin-5.0.2.tgz",
+      "integrity": "sha512-F2G4cQfsMZ6CiPlG22Q5EDUCqnfyZqTjyJP5cMgNYUbBg/dUzV3hto8yTFFIogDCTWooVbePHQE0qL6FrJUSsA==",
       "dev": true,
       "requires": {
-        "schema-utils": "^3.1.0",
-        "serialize-javascript": "^6.0.0"
-      },
-      "dependencies": {
-        "schema-utils": {
-          "version": "3.1.1",
-          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
-          "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==",
+        "cacache": "^15.0.5",
+        "find-cache-dir": "^3.3.1",
+        "schema-utils": "^2.7.0",
+        "serialize-javascript": "^4.0.0",
+        "webpack-sources": "^1.4.3"
+      },
+      "dependencies": {
+        "cacache": {
+          "version": "15.3.0",
+          "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz",
+          "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==",
+          "dev": true,
+          "requires": {
+            "@npmcli/fs": "^1.0.0",
+            "@npmcli/move-file": "^1.0.1",
+            "chownr": "^2.0.0",
+            "fs-minipass": "^2.0.0",
+            "glob": "^7.1.4",
+            "infer-owner": "^1.0.4",
+            "lru-cache": "^6.0.0",
+            "minipass": "^3.1.1",
+            "minipass-collect": "^1.0.2",
+            "minipass-flush": "^1.0.5",
+            "minipass-pipeline": "^1.2.2",
+            "mkdirp": "^1.0.3",
+            "p-map": "^4.0.0",
+            "promise-inflight": "^1.0.1",
+            "rimraf": "^3.0.2",
+            "ssri": "^8.0.1",
+            "tar": "^6.0.2",
+            "unique-filename": "^1.1.1"
+          }
+        },
+        "chownr": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
+          "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
+          "dev": true
+        },
+        "lru-cache": {
+          "version": "6.0.0",
+          "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+          "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
           "dev": true,
           "requires": {
-            "@types/json-schema": "^7.0.8",
-            "ajv": "^6.12.5",
-            "ajv-keywords": "^3.5.2"
+            "yallist": "^4.0.0"
           }
         },
-        "serialize-javascript": {
-          "version": "6.0.0",
-          "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz",
-          "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==",
+        "mkdirp": {
+          "version": "1.0.4",
+          "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
+          "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+          "dev": true
+        },
+        "p-map": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz",
+          "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==",
+          "dev": true,
+          "requires": {
+            "aggregate-error": "^3.0.0"
+          }
+        },
+        "rimraf": {
+          "version": "3.0.2",
+          "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+          "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
           "dev": true,
           "requires": {
-            "randombytes": "^2.1.0"
+            "glob": "^7.1.3"
           }
+        },
+        "ssri": {
+          "version": "8.0.1",
+          "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz",
+          "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==",
+          "dev": true,
+          "requires": {
+            "minipass": "^3.1.1"
+          }
+        },
+        "yallist": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+          "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+          "dev": true
         }
       }
     },
@@ -5801,6 +5949,15 @@
         "universalify": "^0.1.0"
       }
     },
+    "fs-minipass": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
+      "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==",
+      "dev": true,
+      "requires": {
+        "minipass": "^3.0.0"
+      }
+    },
     "fs-write-stream-atomic": {
       "version": "1.0.10",
       "resolved": "https://registry.npm.taobao.org/fs-write-stream-atomic/download/fs-write-stream-atomic-1.0.10.tgz",
@@ -6554,6 +6711,12 @@
       "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
       "dev": true
     },
+    "indent-string": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
+      "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
+      "dev": true
+    },
     "indexes-of": {
       "version": "1.0.1",
       "resolved": "https://registry.nlark.com/indexes-of/download/indexes-of-1.0.1.tgz",
@@ -7783,6 +7946,51 @@
         }
       }
     },
+    "minipass-collect": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz",
+      "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==",
+      "dev": true,
+      "requires": {
+        "minipass": "^3.0.0"
+      }
+    },
+    "minipass-flush": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz",
+      "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==",
+      "dev": true,
+      "requires": {
+        "minipass": "^3.0.0"
+      }
+    },
+    "minipass-pipeline": {
+      "version": "1.2.4",
+      "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz",
+      "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==",
+      "dev": true,
+      "requires": {
+        "minipass": "^3.0.0"
+      }
+    },
+    "minizlib": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
+      "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
+      "dev": true,
+      "requires": {
+        "minipass": "^3.0.0",
+        "yallist": "^4.0.0"
+      },
+      "dependencies": {
+        "yallist": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+          "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+          "dev": true
+        }
+      }
+    },
     "mississippi": {
       "version": "3.0.0",
       "resolved": "https://registry.npm.taobao.org/mississippi/download/mississippi-3.0.0.tgz",
@@ -10851,6 +11059,40 @@
       "integrity": "sha1-ofzMBrWNth/XpF2i2kT186Pme6I=",
       "dev": true
     },
+    "tar": {
+      "version": "6.1.11",
+      "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz",
+      "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==",
+      "dev": true,
+      "requires": {
+        "chownr": "^2.0.0",
+        "fs-minipass": "^2.0.0",
+        "minipass": "^3.0.0",
+        "minizlib": "^2.1.1",
+        "mkdirp": "^1.0.3",
+        "yallist": "^4.0.0"
+      },
+      "dependencies": {
+        "chownr": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
+          "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
+          "dev": true
+        },
+        "mkdirp": {
+          "version": "1.0.4",
+          "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
+          "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+          "dev": true
+        },
+        "yallist": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+          "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+          "dev": true
+        }
+      }
+    },
     "terser": {
       "version": "4.8.0",
       "resolved": "https://registry.nlark.com/terser/download/terser-4.8.0.tgz",

+ 1 - 1
package.json

@@ -27,7 +27,7 @@
     "@vue/cli-plugin-vuex": "~4.5.0",
     "@vue/cli-service": "~4.5.0",
     "babel-eslint": "^10.1.0",
-    "compression-webpack-plugin": "^9.0.0",
+    "compression-webpack-plugin": "^5.0.0",
     "eslint": "^6.7.2",
     "eslint-plugin-vue": "^6.2.2",
     "less": "^4.1.1",

+ 10 - 41
src/components/XForm.vue

@@ -18,6 +18,7 @@
                     style="width: 180px;"
                     :placeholder="item.placeholder"
                     v-model="formData[`${item.field}`]"
+                    @change="onChange(item.field, formData[`${item.field}`])"
                     clearable>
                   <el-option
                       v-for="option in item.options"
@@ -33,6 +34,7 @@
                     :start-placeholder="item.placeholder[0]"
                     :end-placeholder="item.placeholder[1]"
                     type="daterange"
+                    value-format="yyyy-MM-dd"
                     clearable
                     class="date-picker-reset">
                 </el-date-picker>
@@ -46,41 +48,6 @@
             </el-form-item>
           </el-col>
         </template>
-<!--        <el-col :span="4">-->
-<!--          <el-form-item label="栋舍">-->
-<!--            <el-select style="width: 180px;"></el-select>-->
-<!--          </el-form-item>-->
-<!--        </el-col>-->
-<!--        <el-col :span="4">-->
-<!--          <el-form-item label="单元">-->
-<!--            <el-select style="width: 180px;"></el-select>-->
-<!--          </el-form-item>-->
-<!--        </el-col>-->
-<!--        <el-col :span="1">-->
-<!--          <p style="line-height: 30px;">今日</p>-->
-<!--        </el-col>-->
-<!--        <el-col :span="1">-->
-<!--          <p style="line-height: 30px;">本周</p>-->
-<!--        </el-col>-->
-<!--        <el-col :span="1">-->
-<!--          <p style="line-height: 30px;">本月</p>-->
-<!--        </el-col>-->
-<!--        <el-col :span="6">-->
-<!--          <el-form-item>-->
-<!--            <el-date-picker-->
-<!--                v-model="dateRange"-->
-<!--                type="daterange"-->
-<!--                range-separator="至"-->
-<!--                start-placeholder="开始日期"-->
-<!--                end-placeholder="结束日期">-->
-<!--            </el-date-picker>-->
-<!--          </el-form-item>-->
-<!--        </el-col>-->
-<!--        <el-col :span="2">-->
-<!--          <el-form-item>-->
-<!--            <el-button>导出数据</el-button>-->
-<!--          </el-form-item>-->
-<!--        </el-col>-->
       </el-row>
     </el-form>
   </div>
@@ -111,14 +78,16 @@ export default {
   methods: {
     // 拿到方法
     onSelectText(value) {
-      console.log('-------------------------')
-      console.log(value)
+      if(this.formData.value1) {
+        delete this.formData.value1
+      }
       this.$emit('setDay', value)
     },
+    onChange(val, data) {
+      this.$emit('setChange', {type: val, data: data});
+    },
     manage(value) {
-      console.log(value)
-      console.log('*************************')
-      this.$emit('onClickType', value)
+      this.$emit('onClickType', {type: value, data: this.formData})
     }
   }
 }
@@ -132,4 +101,4 @@ export default {
   box-sizing: border-box;
   padding: 20px;
 }
-</style>
+</style>

+ 0 - 473
src/utils/api.js

@@ -1,473 +0,0 @@
-import axios from './http';
-
-/**  登录相关   **/
-// 登录
-export function Login(data) {
-  return axios({
-    url: '/admin/my/loginMultilevel',
-    method: 'post',
-    data: data
-  })
-}
-// 根据用户id 拿到默认的 颜色 和 导航栏
-export function findOne(data) {
-  return axios({
-    url: '/admin/accountMultilevel/findOne',
-    method: 'get',
-    params: data
-  })
-}
-
-// 根据id 修改 默认样式 导航
-export function findUpdate(data) {
-  return axios({
-    url: '/admin/accountMultilevel/update',
-    method: 'post',
-    data: data
-  })
-}
-
-/**  系统管理api  **/
-// 获取菜单用户列表
-export function getUserMenu(data) {
-  return axios({
-    url: '/admin/auth/getMyMenu',
-    method: 'post',
-    params: data
-  })
-}
-
-// 拿到菜单用户列表
-export function getUserMenuAndButon(data) {
-  return axios({
-    url: '/admin/auth/getMyMenuAndButton',
-    method: 'post',
-    params: data,
-  })
-}
-
-// 拿到按钮权限
-export function getMyButton(data) {
-  return axios({
-    url: '/admin/auth/getMyButton',
-    method: 'get',
-    params: data
-  })
-}
-
-// 获取纯菜单(不带按钮)
-export function getMenuList() {
-  return axios({
-    url: '/admin/menu/list1',
-    method: 'post',
-  })
-}
-
-// 获取菜单列表
-export function getMenu() {
-  return axios({
-    url: '/admin/menu/list',
-    method: 'post'
-  })
-}
-
-// 菜单添加
-export function addMenu(data) {
-  return axios({
-    url: '/admin/menu/add',
-    method: 'post',
-    data: data
-  })
-}
-
-// 菜单编辑
-export function editMenu(data) {
-  return axios({
-    url: '/admin/menu/edit',
-    method: 'post',
-    data: data
-  })
-}
-
-// 菜单删除
-export function delMenu(data) {
-  return axios({
-    url: '/admin/menu/remove',
-    method: 'post',
-    params: data
-  })
-}
-
-// 权限列表
-export function getAuth(data) {
-  return axios({
-    url: '/admin/group/list',
-    method: 'post',
-    data: data
-  })
-}
-
-// 权限列表删除
-export function delAuth(data) {
-  return axios({
-    url: '/admin/group/remove',
-    method: 'post',
-    params: data
-  })
-}
-
-// 新增权限组
-export function addAuth(data) {
-  return axios({
-    url: '/admin/group/add',
-    method: 'post',
-    data: data
-  })
-}
-
-// 编辑权限组
-export function editAuth(data) {
-  return axios({
-    url: '/admin/group/edit',
-    method: 'post',
-    data: data
-  })
-}
-
-// 权限分配列表(上次保存的菜单)
-export function getMenuByGroup(data) {
-  return axios({
-    url: '/admin/auth/getMenuByGroup',
-    method: 'get',
-    params: data
-  })
-}
-
-// 权限分配保存
-export function saveGroupMenu(data) {
-  return axios({
-    url: '/admin/auth/saveGroupMenu',
-    method: 'post',
-    data: data
-  })
-}
-
-// 用户分配(上次保存的用户id)
-export function getAcountByGroup(data) {
-  return axios({
-    url: '/admin/auth/getAcountByGroup',
-    method: 'get',
-    params: data
-  })
-}
-
-// 用户分配保存
-export function saveAccountGroup(data) {
-  return axios({
-    url: '/admin/auth/saveAccountGroup',
-    method: 'post',
-    data: data
-  })
-}
-
-// 获取用户列表
-export function getUserList(data) {
-  return axios({
-    // url: '/admin/accountMultilevel/list',
-    url: '/admin/accountMultilevel/listSubordinate',
-    method: 'post',
-    data: data
-  })
-}
-
-// 用户添加
-export function addUser(data) {
-  return axios({
-    url: '/admin/accountMultilevel/add',
-    method: 'post',
-    data: data
-  })
-}
-
-// 用户编辑
-export function editUser(data) {
-  return axios({
-    url: '/admin/accountMultilevel/update',
-    method: 'post',
-    data: data
-  })
-}
-
-// 是否启用账号
-export function isUser(data) {
-  return axios({
-    url: '/admin/accountMultilevel/setAccountStatus',
-    method: 'get',
-    params: data
-  })
-}
-
-// 用户删除
-export function delUser(data) {
-  return axios({
-    url: '/admin/accountMultilevel/remove',
-    method: 'get',
-    params: data
-  })
-}
-
-// 牧场列表
-export function getFarm(data) {
-  return axios({
-    url: '/admin/farm/getFarm',
-    method: 'get',
-    params: data
-  })
-}
-
-// 牧场添加
-export function addFarm(data) {
-  return axios({
-    url: 'admin/farm/add',
-    method: 'post',
-    data: data
-  })
-}
-
-// 牧场编辑
-export function editFarm(data) {
-  return axios({
-    url: 'admin/farm/edit',
-    method: 'post',
-    data: data
-  })
-}
-
-// 牧场删除
-
-export function delFarm(data) {
-  return axios({
-    url: 'admin/farm/remove',
-    method: 'get',
-    params: data
-  })
-}
-
-// 选择牧场
-export function getFarmId(data) {
-  return axios({
-    url: 'admin/accountMultilevel/getLastFarmId',
-    method: 'get',
-    params: data,
-  })
-}
-
-/**
- *
- * 视频监控部分
- * **/
-
-// 监控区域列表
-export function areaList(data) {
-  return axios({
-    url: '/video/cameraArea/list',
-    method: 'post',
-    data: data
-  })
-}
-
-// 监控区域删除
-export function delArea(data) {
-  return axios({
-    url: '/video/cameraArea/remove',
-    method: 'get',
-    params: data
-  })
-}
-
-// 监控区域添加
-export function addArea(data) {
-  return axios({
-    url: '/video/cameraArea/add',
-    method: 'post',
-    data: data
-  })
-}
-
-// 监控区域编辑
-export function editArea(data) {
-  return axios({
-    url: '/video/cameraArea/update',
-    method: 'post',
-    data: data
-  })
-}
-
-// 摄像头品牌列表
-export function brandList(data) {
-  return axios({
-    url: '/video/cameraBrand/list',
-    method: 'post',
-    data: data
-  })
-}
-
-// 品牌添加
-export function addBarand(data) {
-  return axios({
-    url: '/video/cameraBrand/add',
-    method: 'post',
-    data: data
-  })
-}
-
-// 品牌删除
-export function delBarand(data) {
-  return axios({
-    url: '/video/cameraBrand/remove',
-    method: 'get',
-    params: data
-  })
-}
-
-// 品牌编辑
-export function editBarand(data) {
-  return axios({
-    url: '/video/cameraBrand/update',
-    method: 'post',
-    data: data
-  })
-}
-
-// 监控管理列表
-export function videoList(data) {
-  return axios({
-    url: '/video/camera/list',
-    method: 'post',
-    data: data
-  })
-}
-// 监控是否启用
-export function videoSwitch(data) {
-  return axios({
-    url: '/video/camera/updateStatus',
-    method: 'get',
-    params: data
-  })
-}
-// 监控删除
-export function delVideo(data) {
-  return axios({
-    url: '/video/camera/remove',
-    method: 'get',
-    params: data
-  })
-}
-// 监控添加
-export function addVideo(data) {
-  return axios({
-    url: '/video/camera/add',
-    method: 'post',
-    data: data
-  })
-}
-// 监控编辑
-export function editVideo(data) {
-  return axios({
-    url: '/video/camera/update',
-    method: 'post',
-    data: data
-  })
-}
-
-// 根据id获取摄像头
-export function getVideo(data) {
-  return axios({
-    url: '/video/camera/getCameraDetails',
-    method: 'post',
-    data: data
-  })
-}
-
-/** 生产数据 */
-/* 生产数据 - ERP */
-// 存栏结构 - 存栏变动折线图
-export function getInventoryLines(data) {
-  return axios({
-    url: '/produce/prodStock/listStorage',
-    method: 'get',
-    params: data
-  })
-}
-
-// 存栏情况 + 生产情况
-export function getInventoryAndProduct(data) {
-  return axios({
-    url: '/produce/prodStock/listERP',
-    method: 'get',
-    params: data
-  })
-}
-
-/** 经营分析 */
-
-// 经营分析 - 成本分析
-export function getCosts(data) {
-  return axios({
-    url: '/produce/prodCost/listProdCost',
-    method: 'get',
-    params: data
-  })
-}
-
-// 经营分析 - 销售改变
-export function getSalesChange(data) {
-  return axios({
-    url: '/produce/prodSalesDetail/getSalesWeek',
-    method: 'get',
-    params: data
-  })
-}
-// 经营分析 - 销售情况图
-export function getSalesChart(data) {
-  return axios({
-    url: '/produce/prodSalesDetail/getSalesDetail',
-    method: 'get',
-    params: data
-  })
-}
-
-/** 应收 */
-export function getYingShou(data) {
-  return axios({
-    url: '/produce/prodPayable/listReceivable',
-    method: 'get',
-    params: data
-  })
-}
-
-/** 应付 */
-export function getYingFu(data) {
-  return axios({
-    url: '/produce/prodPayable/listPayable',
-    method: 'get',
-    params: data
-  })
-}
-
-/** 人员管理 - 人脸门禁 - Token */
-export function getFaceToken(data) {
-  return axios({
-    url: 'http://192.168.1.171:9987/token/getToken',
-    method: 'get',
-    params: data
-  })
-}
-/** 人员管理 - 人脸门禁 - 查询 */
-export function getFaceGuard(data) {
-  return axios({
-    url: 'http://192.168.1.171:9987/person/get_person_record',
-    method: 'post',
-    data: data
-  })
-}

+ 10 - 1
src/utils/index.js

@@ -8,4 +8,13 @@ export function arrToIds(arr){
         new_ids =  new_ids.substr(1);
     }
     return new_ids;
-}
+}
+
+// 时间格式化
+export function timeDate(timestamp) {
+  var date = new Date(timestamp)
+  var Y = date.getFullYear() + '-'
+  var M = (date.getMonth() + 1) < 10 ? '0' + (date.getMonth() + 1) + '-' : (date.getMonth() + 1) + '-'
+  var D = date.getDate() < 10 ? '0' + date.getDate() + ' ' : date.getDate()
+  return Y + M + D
+}

+ 173 - 15
src/views/Env/DrinkWater.vue

@@ -2,27 +2,30 @@
   <div class="drinkWater">
     <div class="reply" :style="{color: color}">全场饮水情况</div>
     <x-form :formItems="formItems" :day="day" @setDay="setDay" @onClickType="onClickType"></x-form>
-    <div class="echarts">
+    <div class="echarts" v-if="allWaterCount && allWaterList.length > 0">
       <div class="echarts-l">
-        <chart-water-pie></chart-water-pie>
+        <chart-water-pie :waterCount="allWaterCount"></chart-water-pie>
       </div>
       <div class="echarts-r">
-        <chart-water></chart-water>
+        <chart-water :dataValue="allWaterList"></chart-water>
       </div>
     </div>
+    <div  class="echarts" v-else>
+      <el-empty description="暂无数据" style="width: 100%;"></el-empty>
+    </div>
     <br/>
     <div class="reply" :style="{color: color}">饮用水详情</div>
     <div class="carousel">
       <swiper class="swiper" :options="swiperOption">
-        <swiper-slide v-for="item in 10" :key="item" style="padding-top: 10px">
+        <swiper-slide v-for="(item, i) in list" :key="i" style="padding-top: 10px">
           <div class="box">
-            <p>育肥1栋1单元</p>
+            <p>{{item.room}}</p>
             <div class="flex">
               <div>
                 <i class="icon1"></i>
               </div>
               <div>
-                <span>145吨</span>
+                <span>{{item.water == null ? '设备暂无数据' : item.water + '吨'}}</span>
               </div>
             </div>
           </div>
@@ -34,15 +37,18 @@
     </div>
     <br/>
     <div class="reply" :style="{color: color}">筛选查询</div>
-    <x-form :formItems="selectItems" :day="day1" @setDay="setDay1" @onClickType="onClickType1"></x-form>
-    <div class="echarts">
+    <x-form :formItems="selectItems" :day="day1"  @setDay="setDay1" @setChange="setChange" @onClickType="onClickType1"></x-form>
+    <div class="echarts" v-if=" waterList.length > 0">
       <div class="echarts-l">
-        <chart-water-pie :id="'1'"></chart-water-pie>
+        <chart-water-pie :id="'1'" :waterCount="waterCount"></chart-water-pie>
       </div>
       <div class="echarts-r">
-        <chart-water :id="'1'" :dataValue="dataValue"></chart-water>
+        <chart-water :id="'1'" :dataValue="waterList" :room="waterRoom"></chart-water>
       </div>
     </div>
+    <div class="echarts" v-else>
+      <el-empty description="暂无数据" style="width: 100%;"></el-empty>
+    </div>
   </div>
 </template>
 
@@ -53,6 +59,9 @@ import ChartWater from "@/views/dashboard/chart/ChartWater";
 import { swiper, swiperSlide } from 'vue-awesome-swiper';
 import 'swiper/css/swiper.css';
 import { mapState } from 'vuex';
+import {getAllDayWater, getByFloor, getListAllWater, getListWater, getSchool, getUid} from "../../utils/api";
+import {timeDate} from "../../utils";
+
 export default {
   name: "DrinkWater",
   components: {
@@ -97,6 +106,13 @@ export default {
           col: 6
         },
         {
+          id: 6,
+          type: 'button',
+          text: '查询',
+          col: 2,
+          click: 'search'
+        },
+        {
           id: 5,
           type: 'button',
           text: '导出数据',
@@ -104,7 +120,7 @@ export default {
           click: 'derive'
         }
       ],
-      day: 2,
+      day: 1,
       swiperOption: {
         slidesPerView: 8,
         spaceBetween: 30,
@@ -127,13 +143,22 @@ export default {
           type: 'select',
           label: '栋舍:',
           placeholder: '请选择栋舍',
-          field: 'areaId',
+          field: 'floorId',
           options: [],
           col: 4
         },
         {
           id: 2,
           type: 'select',
+          label: '楼层:',
+          placeholder: '请选择楼层',
+          field: 'uid',
+          options: [],
+          col: 4
+        },
+        {
+          id: 10,
+          type: 'select',
           label: '单元:',
           placeholder: '请选择单元',
           field: 'unitId',
@@ -169,6 +194,13 @@ export default {
           col: 6
         },
         {
+          id: 8,
+          type: 'button',
+          text: '查询',
+          col: 1,
+          click: 'search'
+        },
+        {
           id: 7,
           type: 'button',
           text: '导出数据',
@@ -177,18 +209,144 @@ export default {
         }
       ],
       day1: 2,
-      dataValue: [12, 13, 10, 13, 9, 23, 21, 21, 24, 23, 14, 21, 21]
+      dataValue: [12, 13, 10, 13, 9, 23, 21, 21, 24, 23, 14, 21, 21],
+      list: [],
+      allWaterList: [],
+      allWaterCount: null,
+      waterList: [],
+      waterCount: null,
+      waterRoom: '',
     }
   },
   methods: {
+    init() {
+      getAllDayWater().then(res => {
+        if(res.code === 10000) {
+          this.list = res.data
+        }
+      })
+    },
+    initAllWater() {
+      getListAllWater({}).then(res => {
+        if(res.code === 10000) {
+          let that = this;
+          that.allWaterList = res.data.data;
+          that.allWaterCount = res.data.countWater;
+        }
+      })
+    },
+    initWater() {
+      getListWater({}).then(res => {
+        if(res.code === 10000) {
+          this.waterList = res.data.data;
+          this.waterCount = res.data.countWater;
+          this.waterRoom = res.data.room;
+        }
+      })
+    },
+    getSchool() {
+      getSchool().then(res => {
+        if(res.code === 10000) {
+          res.data.forEach(item => {
+            item.value = item.id;
+            item.label = item.floorName;
+          })
+          this.selectItems[0].options = res.data;
+        }
+      })
+    },
+    setChange(item) {
+      if(item.type === 'floorId') {
+        let params = {
+          floorId: item.data
+        }
+        getByFloor(params).then(res => {
+          res.data.forEach(item => {
+            item.value = item.uid;
+            item.label = item.alias
+          })
+          this.selectItems[1].options = res.data;
+        })
+      } else if(item.type === 'uid') {
+        let params = {
+          uid: item.data
+        }
+        getUid(params).then(res => {
+          res.data.forEach(item => {
+            item.value = item.id;
+            item.label = item.roomName
+          })
+          this.selectItems[2].options = res.data
+        })
+      }
+    },
     setDay(data) {
       this.day = data;
     },
-    onClickType() {},
+    onClickType(data) {
+      let params = {};
+      if(data.data.value1) {
+        params = {
+          startDate: data.data.value1[0],
+          endDate: data.data.value1[1],
+          type: 4
+        }
+      } else {
+        params = {
+          endDate: timeDate(new Date().getTime()),
+          type: this.day
+        }
+      }
+      getListAllWater(params).then(res => {
+        if(res.code === 10000) {
+          let that = this;
+          that.allWaterList = res.data.data;
+          that.allWaterCount = res.data.countWater;
+        }
+      })
+    },
     setDay1(data) {
       this.day1 = data;
     },
-    onClickType1() {}
+    onClickType1(data) {
+      if(data.type === 'search') {
+        let data1 = data.data;
+        if(data1.unitId) {
+          let params;
+          if(data1.value1) {
+            params = {
+              roomId: data1.unitId,
+              startDate: data1.value1[0],
+              endDate: data1.value1[1],
+              type: 4,
+            }
+          } else {
+            let end = timeDate(new Date().getTime())
+            params = {
+              roomId: data1.unitId,
+              endDate: end,
+              type: this.day1
+            }
+          }
+          getListWater(params).then(res => {
+            if(res.code === 10000) {
+              this.waterList = res.data.data;
+              this.waterCount = res.data.countWater;
+              this.waterRoom = res.data.room;
+            }
+          })
+        } else {
+          console.log(222)
+          this.$message.error('请选择栋舍楼层单元查询');
+        }
+      }
+    }
+  },
+  mounted() {
+    this.initAllWater()
+    this.initWater()
+    this.init()
+    this.getSchool()
   }
 }
 </script>

+ 144 - 12
src/views/Env/PigHouseEnv.vue

@@ -2,15 +2,15 @@
   <div class="pigHouse">
     <div style="height: 200px">
       <swiper class="swiper" :options="swiperOption">
-        <swiper-slide v-for="item in 10" :key="item" style="padding-top: 10px">
+        <swiper-slide v-for="(item, i) in list" :key="i" style="padding-top: 10px">
           <div class="box">
-            <p>育肥1栋1单元</p>
+            <p>{{item.room}}</p>
             <div class="flex">
               <div>
                 <i class="icon1"></i>
               </div>
               <div>
-                <span>36.6℃</span>
+                <span>{{item.temperature ? item.temperature + '℃' : '设备暂无数据'}}</span>
               </div>
             </div>
             <div style="margin-top: 20px" class="flex">
@@ -18,7 +18,7 @@
                 <i class="icon2"></i>
               </div>
               <div>
-                <span>78RH</span>
+                <span>{{item.humidity ? item.humidity + 'RH' : '设备暂无数据'}}</span>
               </div>
             </div>
           </div>
@@ -30,10 +30,15 @@
       </swiper>
     </div>
     <br/>
-    <x-form :formItems="formItems" :day="day" @setDay="setDay" @onClickType="onClickType"></x-form>
+    <x-form :formItems="formItems" :day="day" @setDay="setDay" @setChange="setChange" @onClickType="onClickType"></x-form>
     <br/>
     <div style="height: 600px">
-      <chart-wsd></chart-wsd>
+      <chart-pig-temp v-if="tempList.list.length > 0" :tempList="tempList"></chart-pig-temp>
+      <el-empty v-else description="暂无数据"></el-empty>
+    </div>
+    <div style="height: 600px">
+      <chart-pig-hum v-if="humList.list.length > 0" :humList="humList"></chart-pig-hum>
+      <el-empty v-else description="暂无数据"></el-empty>
     </div>
   </div>
 </template>
@@ -41,17 +46,20 @@
 <script>
 import { swiper, swiperSlide } from 'vue-awesome-swiper'
 import XForm from "@/components/XForm";
-import ChartWsd from "@/views/dashboard/chart/ChartWsd";
+import ChartPigTemp from "./chart/ChartPigTemp";
+import ChartPigHum from "./chart/ChartPigHum";
 import 'swiper/css/swiper.css'
+import { getEnv, getSchool, getByFloor, getUid, getByRoom } from "../../utils/api";
+import {timeDate} from "../../utils";
+
 export default {
   name: "PigHouseEnv",
   components: {
     swiper,
     swiperSlide,
     XForm,
-    ChartWsd
-    // Swiper,
-    // SwiperSlide
+    ChartPigTemp,
+    ChartPigHum
   },
   data() {
     return {
@@ -71,19 +79,29 @@ export default {
           prevEl: '.swiper-button-prev'
         }
       },
+      list: [],
       formItems: [
         {
           id: 1,
           type: 'select',
           label: '栋舍:',
           placeholder: '请选择栋舍',
-          field: 'areaId',
+          field: 'floorId',
           options: [],
           col: 4
         },
         {
           id: 2,
           type: 'select',
+          label: '楼层:',
+          placeholder: '请选择楼层',
+          field: 'uid',
+          options: [],
+          col: 4
+        },
+        {
+          id: 10,
+          type: 'select',
           label: '单元:',
           placeholder: '请选择单元',
           field: 'unitId',
@@ -119,6 +137,13 @@ export default {
           col: 6
         },
         {
+          id: 8,
+          type: 'button',
+          text: '查询',
+          col: 1,
+          click: 'search'
+        },
+        {
           id: 7,
           type: 'button',
           text: '导出数据',
@@ -127,16 +152,123 @@ export default {
         }
       ],
       // 默认选择本周
-      day: 2
+      day: 2,
+      tempList: {
+        name: '',
+        list: [],
+      },
+      humList: {
+        name: '',
+        list: [],
+      }
     }
   },
   methods: {
+    init() {
+      getEnv().then(res => {
+        if(res.code === 10000) {
+          this.list = res.data;
+        }
+      })
+    },
+    getSchool() {
+      getSchool().then(res => {
+        if(res.code === 10000) {
+          res.data.forEach(item => {
+            item.value = item.id;
+            item.label = item.floorName;
+          })
+          this.formItems[0].options = res.data;
+        }
+      })
+    },
+    setChange(item) {
+      if(item.type === 'floorId') {
+        let params = {
+          floorId: item.data
+        }
+        getByFloor(params).then(res => {
+          res.data.forEach(item => {
+            item.value = item.uid;
+            item.label = item.alias
+          })
+          this.formItems[1].options = res.data;
+        })
+      } else if(item.type === 'uid') {
+        let params = {
+          uid: item.data
+        }
+        getUid(params).then(res => {
+          res.data.forEach(item => {
+            item.value = item.id;
+            item.label = item.roomName
+          })
+          this.formItems[2].options = res.data
+        })
+      }
+    },
     setDay(data) {
       this.day = data;
     },
     onClickType(data) {
       console.log(data)
+      if(data.type === 'search') {
+        let data1 = data.data;
+        if(data1.unitId) {
+          let params;
+          if(data1.value1) {
+            params = {
+              roomId: data1.unitId,
+              startDate: data1.value1[0],
+              endDate: data1.value1[1],
+              type: 4,
+            }
+          } else {
+            let end = timeDate(new Date().getTime())
+            params = {
+              roomId: data1.unitId,
+              endDate: end,
+              type: this.day
+            }
+          }
+          getByRoom(params).then(res => {
+            if(res.code === 10000) {
+              this.tempList = {
+                name: res.data.roomName,
+                list: res.data.semperatures
+              }
+              this.humList = {
+                name: res.data.roomName,
+                list: res.data.humidities
+              }
+            }
+          })
+        } else {
+          console.log(222)
+          this.$message.error('请选择栋舍楼层单元查询');
+        }
+      }
+    },
+    // 默认显示
+    getTempAndHum() {
+      getByRoom({}).then(res => {
+        if(res.code === 10000) {
+          this.tempList = {
+            name: res.data.roomName,
+            list: res.data.semperatures
+          }
+          this.humList = {
+            name: res.data.roomName,
+            list: res.data.humidities
+          }
+        }
+      })
     }
+  },
+  mounted() {
+    this.init()
+    this.getSchool()
+    this.getTempAndHum()
   }
 }
 </script>

+ 145 - 0
src/views/Env/chart/ChartPigHum.vue

@@ -0,0 +1,145 @@
+<template>
+  <div id="chartPigHum" style="width:100%; height: 100%;"></div>
+</template>
+
+<script>
+import { mapState } from 'vuex'
+export default {
+  name: "ChartPigHum",
+  computed: {
+    ...mapState(['color'])
+  },
+  data() {
+    return {
+      myChart: null
+    }
+  },
+  props: {
+    humList: {
+      type: Object,
+      default: function () {
+        return {
+          name: '',
+          list: [],
+        }
+      }
+    }
+  },
+  watch: {
+    color(newVal) {
+      if(newVal) {
+        this.myChart.clear();
+        this.init()
+      }
+    },
+    humList: {
+      handler(newVal) {
+        if(newVal) {
+          this.myChart.clear();
+          this.init()
+        }
+      },
+      deep: true
+    }
+  },
+  methods: {
+    init() {
+      let start = this.humList.list.length - 12;
+      let end = this.humList.list.length - 1;
+      let time = [];
+      let data = [];
+      let name = this.humList.name;
+      this.humList.list.forEach(item => {
+        time.push(item.createTime)
+        data.push(item.value)
+      })
+      let options = {
+        title: {
+          text: `${name}湿度曲线`,
+          left: 'center'
+        },
+        tooltip: {
+          trigger: 'axis',
+        },
+        color: [this.color],
+        dataZoom: [{
+          type: 'inside',
+          startValue: start,
+          endValue: end,
+          show: false
+        }],
+        xAxis: [
+          {
+            type: 'category',
+            data: time,
+            axisPointer: {
+              type: 'shadow'
+            },
+            axisLine: {
+              show: false,
+              lineStyle: {
+                color: '#6e7079',
+              }
+            },
+            axisTick:{
+              show:false
+            },
+          }
+        ],
+        yAxis: [
+          {
+            type: 'value',
+            name: '湿度统计情况',
+            axisLabel: {
+              formatter: '{value}RH'
+            },
+            axisLine: {
+              show: false,
+              lineStyle: {
+                color: '#6e7079',
+              }
+            },
+            axisTick:{
+              show:false
+            },
+          }
+        ],
+        series: [
+          {
+            name: `${name}`,
+            type: 'line',
+            // stack: 'Total',
+            smooth: true,
+            areaStyle: {},
+            emphasis: {
+              focus: 'series'
+            },
+            itemStyle : {
+              color: this.color,
+              borderColor: this.color,
+              normal: {
+                label : {
+                  show: true,
+                  textStyle: {
+                    fontSize: 14
+                  }
+                }
+              }
+            },
+            data: data
+          }
+        ]
+      }
+      this.myChart.setOption(options)
+    }
+  },
+  mounted() {
+    this.myChart = this.$echarts.init(document.getElementById('chartPigHum'));
+    this.init()
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 145 - 0
src/views/Env/chart/ChartPigTemp.vue

@@ -0,0 +1,145 @@
+<template>
+  <div id="chart-pig" style="width: 100%; height: 100%"></div>
+</template>
+
+<script>
+import { mapState } from 'vuex'
+export default {
+  name: "ChartPigTemp",
+  computed: {
+    ...mapState(['color'])
+  },
+  data() {
+    return {
+      myChart: null
+    }
+  },
+  props: {
+    tempList: {
+      type: Object,
+      default: function () {
+        return {
+          name: '',
+          list: [],
+        }
+      }
+    }
+  },
+  watch: {
+    color(newVal) {
+      if(newVal) {
+        this.myChart.clear();
+        this.init()
+      }
+    },
+    tempList: {
+      handler(newVal) {
+        if(newVal) {
+          this.myChart.clear();
+          this.init()
+        }
+      },
+      deep: true
+    }
+  },
+  methods: {
+    init() {
+      let start = this.tempList.list.length - 12;
+      let end = this.tempList.list.length - 1;
+      let time = [];
+      let data = [];
+      let name = this.tempList.name;
+      this.tempList.list.forEach(item => {
+        time.push(item.createTime)
+        data.push(item.value)
+      })
+      let options = {
+        title: {
+          text: `${name}温度曲线`,
+          left: 'center'
+        },
+        tooltip: {
+          trigger: 'axis',
+        },
+        color: [this.color],
+        dataZoom: [{
+          type: 'inside',
+          startValue: start,
+          endValue: end,
+          show: false
+        }],
+        xAxis: [
+          {
+            type: 'category',
+            data: time,
+            axisPointer: {
+              type: 'shadow'
+            },
+            axisLine: {
+              show: false,
+              lineStyle: {
+                color: '#6e7079',
+              }
+            },
+            axisTick:{
+              show:false
+            },
+          }
+        ],
+        yAxis: [
+          {
+            type: 'value',
+            name: '温度统计情况',
+            axisLabel: {
+              formatter: '{value}℃'
+            },
+            axisLine: {
+              show: false,
+              lineStyle: {
+                color: '#6e7079',
+              }
+            },
+            axisTick:{
+              show:false
+            },
+          }
+        ],
+        series: [
+          {
+            name: `${name}`,
+            type: 'line',
+            // stack: 'Total',
+            smooth: true,
+            areaStyle: {},
+            emphasis: {
+              focus: 'series'
+            },
+            itemStyle : {
+              color: this.color,
+              borderColor: this.color,
+              normal: {
+                label : {
+                  show: true,
+                  textStyle: {
+                    fontSize: 14
+                  }
+                }
+              }
+            },
+            data: data
+          }
+        ]
+      }
+      this.myChart.setOption(options)
+    }
+  },
+  mounted() {
+    this.myChart = this.$echarts.init(document.getElementById('chart-pig'));
+    this.init()
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 12 - 2
src/views/Env/chart/ChartWaterPie.vue

@@ -13,6 +13,10 @@ export default {
     id: {
       type: String,
       default: () => '0'
+    },
+    waterCount: {
+      type: String,
+      default: () => '0'
     }
   },
   data() {
@@ -26,11 +30,17 @@ export default {
         this.myChart.clear();
         this.init()
       }
+    },
+    waterCount(newVal) {
+      if(newVal) {
+        this.myChart.clear();
+        this.init()
+      }
     }
   },
   methods: {
     init() {
-      let data = [{name: '总饮水量', value: '123.1'}]
+      let data = [{name: '总饮水量', value: this.waterCount.toString()}]
       let formatNumber = function(num) {
         let reg = /(?=(\B)(\d{3})+$)/g;
         return num.toString().replace(reg, ',');
@@ -125,4 +135,4 @@ export default {
 
 <style scoped>
 
-</style>
+</style>

+ 29 - 21
src/views/dashboard/chart/ChartWater.vue

@@ -18,8 +18,12 @@ export default {
     },
     dataValue: {
       type: Array,
-      default: () => [120, 132, 101, 134, 90, 230, 210, 210, 245, 203, 124, 214, 210]
-    }
+      default: () => []
+    },
+    room: {
+      type: String,
+      default: () => '总'
+    },
   },
   computed: {
     ...mapState(['color'])
@@ -30,14 +34,32 @@ export default {
         this.myChart.clear();
         this.init()
       }
-    }
+    },
+    dataValue: {
+      handler(newVal) {
+        if(newVal) {
+          this.myChart.clear();
+          this.init()
+        }
+      },
+      deep: true
+    },
   },
   methods: {
     init() {
-      let dataAxis = ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月', '测试月'];
+      let dataAxis = [];
+      let data = [];
+      this.dataValue.forEach(item => {
+        dataAxis.push(item.createTime)
+        data.push(item.value)
+      })
       let start = dataAxis.length - 12;
       let end = dataAxis.length - 1;
       let options = {
+        title: {
+          text: this.room + '用水量统计',
+          left: 'center'
+        },
         tooltip: {
           trigger: 'axis',
         },
@@ -47,22 +69,8 @@ export default {
           startValue: start,
           endValue: end,
           show: false
-          // zoomOnMouseWheel: false,
-          // zoomLock: true,
+
         }],
-        // dataZoom: [
-        //
-        //   {
-        //     type: 'slider',
-        //     startValue: start,
-        //     endValue:end,
-        //     zoomOnMouseWheel: false,
-        //     zoomLock: true,
-        //   },
-        //   {
-        //     type: 'inside'
-        //   },
-        // ],
         xAxis: [
           {
             type: 'category',
@@ -121,7 +129,7 @@ export default {
                 }
               }
             },
-            data: this.dataValue
+            data: data
           }
         ]
       }
@@ -137,4 +145,4 @@ export default {
 
 <style scoped>
 
-</style>
+</style>