From 666460a0d99785cac1de67bc79e0a3c24d83b333 Mon Sep 17 00:00:00 2001 From: copper Date: Sun, 29 Nov 2020 13:49:42 +0800 Subject: [PATCH] =?UTF-8?q?1.=20=E6=B7=BB=E5=8A=A0=E5=90=8E=E5=8F=B0?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E5=AE=9E=E7=8E=B0=EF=BC=9A=E5=AF=B9=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=E3=80=81=E8=AE=BE=E5=A4=87=E3=80=81=E4=BA=BA=E5=91=98?= =?UTF-8?q?=E3=80=81=E4=BC=A0=E6=84=9F=E5=99=A8=E7=9A=84=E5=A2=9E=E5=88=A0?= =?UTF-8?q?=E6=94=B9=E6=9F=A5=202.=20=E9=9B=86=E6=88=90=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 2 + src/components/Main.vue | 37 ++-- src/components/admin/Index.vue | 9 +- src/components/admin/forms/DeviceDetail.vue | 136 ++++++++++++++ src/components/admin/forms/ProjectDetail.vue | 118 ++++++++++++ src/components/admin/forms/SensorDetai.vue | 57 ++++++ src/components/admin/forms/UserDetail.vue | 73 +++++++ src/components/admin/tables/DeviceTable.vue | 188 ++++++++++++------- src/components/admin/tables/ProjectTable.vue | 165 +++++++++++----- src/components/admin/tables/SensorTable.vue | 81 +++++++- src/components/admin/tables/UserTable.vue | 157 ++++++++++++++++ src/components/icon/index.js | 2 +- src/components/search/Index.vue | 136 +++++++++++++- src/components/search/SZJCChart.vue | 112 +++++++++++ src/main.js | 3 +- src/utils/http.js | 44 ++++- src/utils/utils.js | 27 ++- src/utils/water.js | 27 +++ 18 files changed, 1212 insertions(+), 162 deletions(-) create mode 100644 src/components/admin/forms/DeviceDetail.vue create mode 100644 src/components/admin/forms/ProjectDetail.vue create mode 100644 src/components/admin/forms/SensorDetai.vue create mode 100644 src/components/admin/forms/UserDetail.vue create mode 100644 src/components/admin/tables/UserTable.vue create mode 100644 src/components/search/SZJCChart.vue create mode 100644 src/utils/water.js diff --git a/package.json b/package.json index 2119cc3..76a8367 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,9 @@ "ant-design-vue": "^1.7.0", "axios": "^0.21.0", "core-js": "^3.6.5", + "echarts": "^4.9.0", "ol": "^6.4.3", + "v-charts": "^1.19.0", "vue": "^2.6.11", "vue-router": "^3.4.8", "vuex": "^3.5.1" diff --git a/src/components/Main.vue b/src/components/Main.vue index d3685ae..bdddc1b 100644 --- a/src/components/Main.vue +++ b/src/components/Main.vue @@ -2,8 +2,8 @@ - - 水质监测平台 + + 水质监测平台 登出 @@ -11,34 +11,27 @@ - + 主页 数据查询 - - 详细信息 - Option 2 - - - Option 3 - Option 4 - + 详细数据 - 图形分析 + 图形分析 - 后台管理 + 后台管理 - + @@ -49,7 +42,9 @@ import IconFont from '@/components/icon' import MapLayout from '@/components/map/Index' -import Search from '@/components/search/Index' +import DetailSearch from '@/components/search/Index' +import Analysis from '@/components/analysis/Index' + import Logs from '@/components/logs/Index' import Admin from '@/components/admin/Index' import { logout } from '@/utils/http' @@ -57,13 +52,14 @@ export default { components: { 'icon-font':IconFont, 'map-layout':MapLayout, - 'search':Search, + 'detail-search':DetailSearch, + 'analysis':Analysis, // 'logs':Logs, 'admin':Admin }, data() { return { - current:['map'], + current:['map-layout'], currentComp: 'map-layout' }; }, @@ -95,4 +91,11 @@ export default { .ant-layout-content { height: calc(100vh - 110px); } +.w-title{ + color: white; + line-height: 50px; + font-size: 24px; + font-weight: 600; + +} \ No newline at end of file diff --git a/src/components/admin/Index.vue b/src/components/admin/Index.vue index 868ee67..e201554 100644 --- a/src/components/admin/Index.vue +++ b/src/components/admin/Index.vue @@ -20,6 +20,10 @@ 项目 + + + 人员 + @@ -35,13 +39,14 @@ import SensorTable from "./tables/SensorTable"; import DeviceTable from './tables/DeviceTable'; import ProjectTable from './tables/ProjectTable'; - +import UserTable from './tables/UserTable'; import { getData, URL_MAP } from "@/utils/http"; export default { components: { 'sensor-table':SensorTable, 'device-table':DeviceTable, - 'project-table':ProjectTable + 'project-table':ProjectTable, + 'user-table':UserTable }, data() { return { diff --git a/src/components/admin/forms/DeviceDetail.vue b/src/components/admin/forms/DeviceDetail.vue new file mode 100644 index 0000000..8e591c0 --- /dev/null +++ b/src/components/admin/forms/DeviceDetail.vue @@ -0,0 +1,136 @@ + + + + + \ No newline at end of file diff --git a/src/components/admin/forms/ProjectDetail.vue b/src/components/admin/forms/ProjectDetail.vue new file mode 100644 index 0000000..dad3b57 --- /dev/null +++ b/src/components/admin/forms/ProjectDetail.vue @@ -0,0 +1,118 @@ + + + + + \ No newline at end of file diff --git a/src/components/admin/forms/SensorDetai.vue b/src/components/admin/forms/SensorDetai.vue new file mode 100644 index 0000000..f62873e --- /dev/null +++ b/src/components/admin/forms/SensorDetai.vue @@ -0,0 +1,57 @@ + + + + + \ No newline at end of file diff --git a/src/components/admin/forms/UserDetail.vue b/src/components/admin/forms/UserDetail.vue new file mode 100644 index 0000000..2fa554a --- /dev/null +++ b/src/components/admin/forms/UserDetail.vue @@ -0,0 +1,73 @@ + + + + + \ No newline at end of file diff --git a/src/components/admin/tables/DeviceTable.vue b/src/components/admin/tables/DeviceTable.vue index 9d0e66b..5caf2d3 100644 --- a/src/components/admin/tables/DeviceTable.vue +++ b/src/components/admin/tables/DeviceTable.vue @@ -1,5 +1,8 @@ diff --git a/src/components/admin/tables/ProjectTable.vue b/src/components/admin/tables/ProjectTable.vue index 5e0fa29..8a5b7db 100644 --- a/src/components/admin/tables/ProjectTable.vue +++ b/src/components/admin/tables/ProjectTable.vue @@ -1,5 +1,8 @@ diff --git a/src/components/admin/tables/SensorTable.vue b/src/components/admin/tables/SensorTable.vue index 9a5aa46..795ae62 100644 --- a/src/components/admin/tables/SensorTable.vue +++ b/src/components/admin/tables/SensorTable.vue @@ -1,5 +1,8 @@ + + \ No newline at end of file diff --git a/src/components/icon/index.js b/src/components/icon/index.js index d3806f9..357999d 100644 --- a/src/components/icon/index.js +++ b/src/components/icon/index.js @@ -1,7 +1,7 @@ import { Icon } from 'ant-design-vue'; const IconFont = Icon.createFromIconfontCN({ - scriptUrl: '//at.alicdn.com/t/font_2205869_701srfkqc5.js', // generated by iconfont.cn + scriptUrl: '//at.alicdn.com/t/font_2205869_ablhiuxmevf.js', // generated by iconfont.cn }); export default IconFont \ No newline at end of file diff --git a/src/components/search/Index.vue b/src/components/search/Index.vue index 4426412..753b07d 100644 --- a/src/components/search/Index.vue +++ b/src/components/search/Index.vue @@ -1,18 +1,142 @@ \ No newline at end of file diff --git a/src/components/search/SZJCChart.vue b/src/components/search/SZJCChart.vue new file mode 100644 index 0000000..597e4b5 --- /dev/null +++ b/src/components/search/SZJCChart.vue @@ -0,0 +1,112 @@ + + + + + diff --git a/src/main.js b/src/main.js index 11a9c22..311f3ae 100644 --- a/src/main.js +++ b/src/main.js @@ -3,10 +3,11 @@ import App from './App.vue' import store from './utils/store' import router from './utils/router' import Antd from 'ant-design-vue'; +import VCharts from 'v-charts' import 'ant-design-vue/dist/antd.css'; Vue.use(Antd) - +Vue.use(VCharts) Vue.config.productionTip = false Vue.prototype.$store = store diff --git a/src/utils/http.js b/src/utils/http.js index 329ad46..fb5aaf5 100644 --- a/src/utils/http.js +++ b/src/utils/http.js @@ -14,6 +14,9 @@ export const URL_MAP = { PROJECT_DETAIL: 'project/detail/', SENSOR_LIST: 'sensor/', SENSOR_DETAIL: 'sensor/detail/', + WATER_LIST: 'v1/api/water_detail/', + USER_LIST: 'user/', + USER_DETAIL: 'user/detail/' } @@ -45,7 +48,46 @@ export async function logout() } export async function getData(url, json) { - let response = await instance.get(url, json) + let response = await instance.get(url, { + params: json + }) + + let data = await response.data + return data +} + +export async function postJSON(url, json) { + const headerJSON = { + "Content-Type": "application/json" + }; + let response = await instance.post(url, JSON.stringify(json), { headers: headerJSON }) + let data = await response.data + return data +} + +export async function putJSON(url, json) { + const headerJSON = { + "Content-Type": "application/json" + }; + let response = await instance.put(url, JSON.stringify(json), { headers: headerJSON }) + let data = await response.data + return data +} + +export async function patchJSON(url, json) { + const headerJSON = { + "Content-Type": "application/json" + }; + let response = await instance.patch(url, JSON.stringify(json), { headers: headerJSON }) + let data = await response.data + return data +} + +export async function deleteJSON(url, json) { + const headerJSON = { + "Content-Type": "application/json" + }; + let response = await instance.delete(url, { data:json }) let data = await response.data return data } \ No newline at end of file diff --git a/src/utils/utils.js b/src/utils/utils.js index cb64c1d..c1bdca4 100644 --- a/src/utils/utils.js +++ b/src/utils/utils.js @@ -1,15 +1,14 @@ -import { getData } from './http' - -function processDevice(store) -{ - const { deviceList, projectList, sensorList } = store.state - - let deviceIdName = {} - let projectIdName = {} - let sensorIdName = {} - - deviceList.forEach(d => deviceIdName[d._id] = d.device_name) - projectList.forEach(p => projectIdName[p._id.$oid] = p.name) - sensorList.forEach(s => sensorIdName[s._id.$oid] = s.name) - +export function mergeList(a1=[], a2=[], key='_id') { + let a = [] + let u = [] + a1.forEach(uu => { + a.push(uu) + u.push(uu[key]) + }) + a2.forEach(uu => { + if(!u.includes(uu[key])) { + a.push(uu) + } + }) + return a } \ No newline at end of file diff --git a/src/utils/water.js b/src/utils/water.js new file mode 100644 index 0000000..6d71cf9 --- /dev/null +++ b/src/utils/water.js @@ -0,0 +1,27 @@ +export function processWater(water, label){ + + const waters = [] + + water.forEach( w => { + let n = {} + label.forEach( key => { + if(!!w.data) { + n[key] = w.data[key] + } + + } ) + n['time'] = new Date(w.data.collect_time) + waters.push(n) + } ) + return waters +} + +export function processTimeData(dataArr=[], start=new Date(), end=new Date(), step=1) { + const data_re = [] + for(let i=start.getTime(); i<=end.getTime(); i+=step) + { + data_re.push({ + + }) + } +} \ No newline at end of file