From c1e2ec17485606ba8d2d6de9520396e55248ff6d Mon Sep 17 00:00:00 2001 From: web <candymxq888@outlook.com> Date: 星期二, 25 三月 2025 17:10:50 +0800 Subject: [PATCH] feat:添加界面,接入设备数据 --- src/api/facility/index.js | 8 src/components/Menu/MenuItem.vue | 35 ++ .env.development | 3 src/components/Menu/index.vue | 21 + src/api/screen/shebei/index.js | 22 + src/views/facility/facilityList/index.vue | 17 src/views/screen/flow/shebei/index.vue | 119 +++++---- src/api/facility/point.js | 6 src/views/facility/monitorList/index.vue | 432 +++++++++++++++++------------------ .env.production | 4 10 files changed, 387 insertions(+), 280 deletions(-) diff --git a/.env.development b/.env.development index 6c41795..6911e80 100644 --- a/.env.development +++ b/.env.development @@ -5,6 +5,9 @@ # 开发环境配置 VITE_APP_ENV = 'development' +# 图片地址 +VITE_APP_IMG_BASEURL = 'http://192.168.0.200:8036/upload' + # 金川接口 # VITE_APP_PUBLIC_REQUEST_API = 'http://113.250.189.120:8030' # VITE_APP_PUBLIC_REQUEST_API = 'http://113.250.189.120:8036' diff --git a/.env.production b/.env.production index d5fbb8b..51e2488 100644 --- a/.env.production +++ b/.env.production @@ -5,8 +5,10 @@ # 开发环境配置 VITE_APP_ENV = 'production' +# 图片地址 +VITE_APP_IMG_BASEURL = 'http://113.250.189.120:8036/upload' + # 金川管理系统/开发环境 -#VITE_APP_PUBLIC_REQUEST_API = 'https://wise.huiwuyuntong.com/farming-api' VITE_APP_PUBLIC_REQUEST_API = 'http://113.250.189.120:8036' # 是否在打包时开启压缩,支持 gzip 和 brotli VITE_BUILD_COMPRESS = gzip diff --git a/src/api/facility/index.js b/src/api/facility/index.js index dc31fae..2599d5b 100644 --- a/src/api/facility/index.js +++ b/src/api/facility/index.js @@ -37,5 +37,13 @@ data, }); }, + get: (params) => { + return publicRequest({ + url: '/waterFacility/get', + method: 'get', + params + }); + }, + }; } diff --git a/src/api/facility/point.js b/src/api/facility/point.js index ffc596c..f265ba7 100644 --- a/src/api/facility/point.js +++ b/src/api/facility/point.js @@ -36,5 +36,11 @@ data }); }, + getParentPoint: () => { + return publicRequest({ + url: 'waterMonitoryPoint/getListTree', + method: 'get', + }) + } }; } diff --git a/src/api/screen/shebei/index.js b/src/api/screen/shebei/index.js new file mode 100644 index 0000000..2bff914 --- /dev/null +++ b/src/api/screen/shebei/index.js @@ -0,0 +1,22 @@ +import {publicRequest} from '@/utils/request' + + +/** + * 获取水温设备菜单 + */ +export const getTemperatureMenu = () => { + return publicRequest({ + url: 'waterTemperature/getFacilityList', + method: 'get', + }) +} + +/** + * 获取流量设备菜单 + */ +export const getFlowMenu = () => { + return publicRequest({ + url: 'waterFlow/getFacilityList', + method: 'get', + }) +} \ No newline at end of file diff --git a/src/components/Menu/MenuItem.vue b/src/components/Menu/MenuItem.vue new file mode 100644 index 0000000..191667b --- /dev/null +++ b/src/components/Menu/MenuItem.vue @@ -0,0 +1,35 @@ +<script setup> + +const props = defineProps({ + item: { + type: Object, + default: () => {} + } +}) + +</script> + +<template> + <template v-if="!item?.hidden"> + <!-- 只有一个子菜单的情况 --> + <template v-if="props.item?.children?.length === 0"> + <el-menu-item :index="props.item?.id">{{props.item?.name}}</el-menu-item> + </template> + + <!-- 多个子菜单的情况 --> + <el-sub-menu v-else :index="props.item?.id" popper-append-to-body> + <template #title> + <span>{{props.item?.name}}</span> + </template> + <MenuItem + v-for="(item, index) in props.item?.children" + :key="index" + :item="item" + ></MenuItem> + </el-sub-menu> + </template> +</template> + +<style scoped lang="scss"> + +</style> \ No newline at end of file diff --git a/src/components/Menu/index.vue b/src/components/Menu/index.vue new file mode 100644 index 0000000..0d97299 --- /dev/null +++ b/src/components/Menu/index.vue @@ -0,0 +1,21 @@ +<script setup> +import MenuItem from "./MenuItem.vue"; + +const props = defineProps({ + menuList: { + type: Array, + default: () => [] + } +}) + +</script> + +<template> + <el-menu class="el-menu"> + <MenuItem v-for="(item, index) in props.menuList" :key="index" :item="item" /> + </el-menu> +</template> + +<style scoped lang="scss"> + +</style> \ No newline at end of file diff --git a/src/views/facility/facilityList/index.vue b/src/views/facility/facilityList/index.vue index b54b6a9..03e6ce3 100644 --- a/src/views/facility/facilityList/index.vue +++ b/src/views/facility/facilityList/index.vue @@ -81,9 +81,10 @@ }); //查询监控点 const pointList = ref(); +const cascaderOption = { label: 'pointName', value: 'id', children: 'childrenList', checkStrictly: true, expandTrigger: 'hover', emitPath: false }; //级联选择器配置 const getPoint = async () => { - await pointApi().search({limit: 100, page: 1}).then((res) => { - pointList.value = res.data.list + await pointApi().getParentPoint().then((res) => { + pointList.value = res.data }) } @@ -359,14 +360,7 @@ </el-select> </el-form-item> <el-form-item label="选择监控点" prop="pointId"> - <el-select v-model="form.pointId" :placeholder="inpTip+formLabel.pointId"> - <el-option - v-for="(item,index) in pointList" - :label="item.pointName" - :value="item.id" - :key="index" - ></el-option> - </el-select> + <el-cascader v-model="form.pointId" :options="pointList" :show-all-levels="false" :props="cascaderOption" /> </el-form-item> <el-form-item label="安装日期" prop="installDate"> <el-date-picker @@ -424,6 +418,9 @@ } .form-box{ justify-content: normal; + :deep(.el-cascader){ + flex-grow: 1; + } } </style> \ No newline at end of file diff --git a/src/views/facility/monitorList/index.vue b/src/views/facility/monitorList/index.vue index 990ed08..936c6ca 100644 --- a/src/views/facility/monitorList/index.vue +++ b/src/views/facility/monitorList/index.vue @@ -19,13 +19,13 @@ */ /** 搜索按钮操作 */ function handleQuery() { - getList({keywords: searchParams.value.keywords}) + getList({keywords: searchParams.value.keywords}) } /** 重置按钮操作 */ function resetQuery() { - proxy.resetForm("queryRef"); - handleQuery(); + proxy.resetForm("queryRef"); + handleQuery(); } /** @@ -33,108 +33,110 @@ */ const pageParam = ref({ - total: 0, - limit: 0, - page: 1, + total: 0, + limit: 0, + page: 1, }) const tableData = ref([]); let tableHeader = ref({ - pointName: '监控点名称', - pointCode: '监控点编号', - pointType: '监控类型', - address: '详细地址', - createTimeView: '创建时间', - imageUrl: '图片', - remark: '备注' + pointName: '监控点名称', + pointCode: '监控点编号', + pointType: '监控类型', + address: '详细地址', + createTimeView: '创建时间', + imageUrl: '图片', + remark: '备注' }) /** 获取权限列表 */ async function getList(val) { - loading.value = true; - let postParam = setPostParams(val) - await pointApi().search({...postParam, ...searchParams.value}).then((res) => { - monityList.value = res.data.list; - tableData.value = res.data.list - pageParam.value.total = res.data.total - pageParam.value.limit = res.data.limit - pageParam.value.page = res.data.page - }) - loading.value = false; + loading.value = true; + let postParam = setPostParams(val) + await pointApi().search({...postParam, ...searchParams.value}).then((res) => { + tableData.value = res.data.list + pageParam.value.total = res.data.total + pageParam.value.limit = res.data.limit + pageParam.value.page = res.data.page + }) + loading.value = false; } /** * 表单相关 */ const formLabel = ({ - pointName: '监控点名称', - pointCode: '监控点编号', - pointType: '监控点类型', - parentId: '父级监控点', - address: '详细地址', - imageUrl: '图片', - remark: '备注' + pointName: '监控点名称', + pointCode: '监控点编号', + pointType: '监控点类型', + parentId: '父级监控点', + address: '详细地址', + imageUrl: '图片', + remark: '备注' }) const rules = ref({ - pointName: [{required: true, message: `请输入${formLabel.pointName}`, trigger: "blur"}], - pointCode: [{required: true, message: `请输入${formLabel.address}`, trigger: "blur"}], - pointType: [{required: true, message: `请输入${formLabel.pointType}`, trigger: "blur"}], + pointName: [{required: true, message: `请输入${formLabel.pointName}`, trigger: "blur"}], + pointCode: [{required: true, message: `请输入${formLabel.address}`, trigger: "blur"}], + pointType: [{required: true, message: `请输入${formLabel.pointType}`, trigger: "blur"}], }); const form = ref({ - pointName: '', - pointCode: '', - pointType: '', - parentId: '', - address: '', - imageUrl: '', - remark: '' + pointName: '', + pointCode: '', + pointType: '', + parentId: '', + address: '', + imageUrl: '', + remark: '' }); const searchParams = ref({ - keywords: '', + keywords: '', }); // 监控点列表 const monityList = ref([]); // 监控点类型 -const monityTypeList = ref([]); +const monityTypeList = [ + {id: 1, name: '水温监测点'}, + {id: 2, name: '生态流量监测点'} +]; +const cascaderOption = { label: 'pointName', value: 'id', children: 'childrenList', checkStrictly: true, expandTrigger: 'hover', emitPath: false }; //级联选择器配置 /** 新增按钮操作 */ async function handleAdd() { - reset(); - open.value = true; - title.value = "新增"; + reset(); + open.value = true; + title.value = "新增"; } /** 修改按钮操作 */ async function handleUpdate(row) { - reset(); - Object.keys(form.value).forEach(key => { - if (row.hasOwnProperty(key)) { - form.value[key] = row[key]; - } - }); - form.value.id = row.id - open.value = true; - title.value = "修改"; + reset(); + Object.keys(form.value).forEach(key => { + if (row.hasOwnProperty(key)) { + form.value[key] = row[key]; + } + }); + form.value.id = row.id + open.value = true; + title.value = "修改"; } /** 删除按钮操作 */ function handleDelete(row) { - proxy.$modal.confirm('是否确认删除名称为"' + row.contact + '"的数据项?').then(function () { - // return pointApi().remove(row.id); - }).then(() => { - getList(); - proxy.$modal.msgSuccess("删除成功"); - }).catch(() => { - }); + proxy.$modal.confirm('是否确认删除名称为"' + row.contact + '"的数据项?').then(function () { + // return pointApi().remove(row.id); + }).then(() => { + getList(); + proxy.$modal.msgSuccess("删除成功"); + }).catch(() => { + }); } -// 获取监控点类型 -const getMonitryType = () => { - monityTypeList.value = [ - {id: 1, name: '水温监测点'}, - {id: 2, name: '生态流量监测点'} - ] +// 获取监控点列表 +const getMonitryList = () => { + pointApi().getParentPoint().then(res => { + monityList.value = res.data; + }) } /** @@ -146,179 +148,175 @@ //上传文件,添加图片地址信息 const uploadData = (data) => { - form.value.imageUrl = data.toString(); + form.value.imageUrl = data.toString(); } /** 提交按钮 */ function submitForm() { - proxy.$refs["formRef"].validate(valid => { - if (valid) { - if (form.value.id != undefined) { - pointApi().modify(form.value).then(res => { - proxy.$modal.msgSuccess("修改成功"); - open.value = false; - getList(); - }).catch(() => { - open.value = false; - proxy.$modal.msgError("修改失败"); - }); - } else { - pointApi().create(form.value).then(res => { - proxy.$modal.msgSuccess("新增成功"); - open.value = false; - getList(); - }).catch(() => { - open.value = false; - proxy.$modal.msgError("新增失败"); - }); - } - } - }); + proxy.$refs["formRef"].validate(valid => { + if (valid) { + if (form.value.id != undefined) { + pointApi().modify(form.value).then(res => { + proxy.$modal.msgSuccess("修改成功"); + open.value = false; + getList(); + }).catch(() => { + open.value = false; + proxy.$modal.msgError("修改失败"); + }); + } else { + pointApi().create(form.value).then(res => { + proxy.$modal.msgSuccess("新增成功"); + open.value = false; + getList(); + }).catch(() => { + open.value = false; + proxy.$modal.msgError("新增失败"); + }); + } + } + }); } /** 取消按钮 */ function cancel() { - open.value = false; - reset(); + open.value = false; + reset(); } /** 表单重置 */ function reset() { - form.value = { - parentId: '', - pointName: '', - pointCode: '', - pointType: '', - address: '', - imageUrl: '', - remark: '' - }; - proxy.resetForm("formRef"); + form.value = { + parentId: '', + pointName: '', + pointCode: '', + pointType: '', + address: '', + imageUrl: '', + remark: '' + }; + proxy.resetForm("formRef"); } onMounted(() => { - getMonitryType(); - getList(); + getList(); + getMonitryList(); }) </script> <template> - <div class="app-container"> - <el-form :model="searchParams" ref="queryRef" :inline="true"> - <el-form-item label="" prop=""> - <el-input - v-model="searchParams.keywords" - placeholder="请输入搜索信息" - clearable - style="width: 200px" - @keyup.enter="handleQuery" - /> - </el-form-item> - <el-form-item> - <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> - <el-button icon="Refresh" @click="resetQuery">重置</el-button> - </el-form-item> - </el-form> + <div class="app-container"> + <el-form :model="searchParams" ref="queryRef" :inline="true"> + <el-form-item label="" prop=""> + <el-input + v-model="searchParams.keywords" + placeholder="请输入搜索信息" + clearable + style="width: 200px" + @keyup.enter="handleQuery" + /> + </el-form-item> + <el-form-item> + <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> + <el-button icon="Refresh" @click="resetQuery">重置</el-button> + </el-form-item> + </el-form> - <el-row :gutter="10" class="mb8"> - <el-col :span="1.5"> - <el-button - type="primary" - plain - icon="Plus" - @click="handleAdd" - >新增 - </el-button> - </el-col> - </el-row> - <!--表格及分页--> - <el-table v-loading="loading" :data="tableData"> - <el-table-column - v-for="(item, key, index) of tableHeader" - :prop="key.toString()" - :label="item" - :key="index" - align="center" - > - <template #default="scope"> - <div v-if="key === 'imageUrl'"> - <img :src="scope.row.headImg" class="table-headImg"/> - </div> - <div v-else-if="key === 'pointType'"> - {{ scope.row.pointType === 1 ? '水温监测点' : '生态流量监测点' }} - </div> - </template> - </el-table-column> - <el-table-column label="操作" align="center" class-name="small-padding fixed-width"> - <template #default="scope"> - <el-button link type="primary" icon="Edit" v-has="['update',route]" - @click="handleUpdate(scope.row)">修改 - </el-button> - <el-button link type="primary" icon="Delete" v-has="['delete',route]" - @click="handleDelete(scope.row)">删除 - </el-button> - </template> - </el-table-column> - </el-table> - <pagination - :total="pageParam.total" - v-model:page="pageParam.page" - v-model:limit="pageParam.limit" - :page-sizes="[10,20,30]" - @pagination="getList" - /> - <!-- 添加/修改表单 --> - <el-dialog :title="title" v-model="open" append-to-body center> - <el-form class="form-box" ref="formRef" :model="form" :rules="rules" label-width='auto'> - <el-form-item :label="formLabel.parentId" prop="parentId"> - <el-select v-model="form.parentId" :placeholder="'请输入'+formLabel.parentId"> - <el-option - v-for="(item,index) in monityList" - :label="item.pointName" - :value="item.id" + <el-row :gutter="10" class="mb8"> + <el-col :span="1.5"> + <el-button + type="primary" + plain + icon="Plus" + @click="handleAdd" + >新增 + </el-button> + </el-col> + </el-row> + <!--表格及分页--> + <el-table v-loading="loading" :data="tableData"> + <el-table-column + v-for="(item, key, index) of tableHeader" + :prop="key.toString()" + :label="item" :key="index" - ></el-option> - </el-select> - </el-form-item> - <el-form-item :label="formLabel.pointType" prop="pointType"> - <el-select v-model="form.pointType" :placeholder="'请输入'+formLabel.pointType"> - <el-option - v-for="(item,index) in monityTypeList" - :label="item.name" - :value="item.id" - :key="index" - ></el-option> - </el-select> - </el-form-item> - <el-form-item :label="formLabel.pointName" prop="pointName"> - <el-input v-model="form.pointName" :placeholder="'请输入'+formLabel.pointName"/> - </el-form-item> - <el-form-item :label="formLabel.pointCode" prop="pointCode"> - <el-input v-model="form.pointCode" :placeholder="'请输入'+formLabel.pointCode"/> - </el-form-item> - <el-form-item :label="formLabel.address" prop="address"> - <el-input v-model="form.address" :placeholder="'请输入'+formLabel.address"/> - </el-form-item> - <el-form-item :label="formLabel.remark" prop="address"> - <el-input v-model="form.remark" :placeholder="'请输入'+formLabel.remark"/> - </el-form-item> -<!-- <el-form-item></el-form-item>--> - <el-form-item label="图片" prop="imageUrl" style="flex: 1"> - <upload-icons @uploadData="uploadData" :imageList="form.imageUrl" :limit="1"></upload-icons> - <span style="display: block;">(请上传1张设备图片)</span> - </el-form-item> - </el-form> - <template #footer> - <div class="dialog-footer"> - <el-button type="primary" @click="submitForm">确 定</el-button> - <el-button @click="cancel">取 消</el-button> - </div> - </template> - </el-dialog> - </div> + align="center" + > + <template #default="scope"> + <div v-if="key === 'imageUrl'"> + <img :src="scope.row.headImg" class="table-headImg"/> + </div> + <div v-else-if="key === 'pointType'"> + {{ scope.row.pointType === 1 ? '水温监测点' : '生态流量监测点' }} + </div> + </template> + </el-table-column> + <el-table-column label="操作" align="center" class-name="small-padding fixed-width"> + <template #default="scope"> + <el-button link type="primary" icon="Edit" v-has="['update',route]" + @click="handleUpdate(scope.row)">修改 + </el-button> + <el-button link type="primary" icon="Delete" v-has="['delete',route]" + @click="handleDelete(scope.row)">删除 + </el-button> + </template> + </el-table-column> + </el-table> + <pagination + :total="pageParam.total" + v-model:page="pageParam.page" + v-model:limit="pageParam.limit" + :page-sizes="[10,20,30]" + @pagination="getList" + /> + <!-- 添加/修改表单 --> + <el-dialog :title="title" v-model="open" append-to-body center> + <el-form class="form-box" ref="formRef" :model="form" :rules="rules" label-width='auto'> + <el-form-item :label="formLabel.parentId" prop="parentId"> + <el-cascader v-model="form.parentId" :options="monityList" :show-all-levels="false" :props="cascaderOption" /> + </el-form-item> + <el-form-item :label="formLabel.pointType" prop="pointType"> + <el-select v-model="form.pointType" :placeholder="'请输入'+formLabel.pointType"> + <el-option + v-for="(item,index) in monityTypeList" + :label="item.name" + :value="item.id" + :key="index" + ></el-option> + </el-select> + </el-form-item> + <el-form-item :label="formLabel.pointName" prop="pointName"> + <el-input v-model="form.pointName" :placeholder="'请输入'+formLabel.pointName"/> + </el-form-item> + <el-form-item :label="formLabel.pointCode" prop="pointCode"> + <el-input v-model="form.pointCode" :placeholder="'请输入'+formLabel.pointCode"/> + </el-form-item> + <el-form-item :label="formLabel.address" prop="address"> + <el-input v-model="form.address" :placeholder="'请输入'+formLabel.address"/> + </el-form-item> + <el-form-item :label="formLabel.remark" prop="address"> + <el-input v-model="form.remark" :placeholder="'请输入'+formLabel.remark"/> + </el-form-item> + <!-- <el-form-item></el-form-item>--> + <el-form-item label="图片" prop="imageUrl" style="flex: 1"> + <upload-icons @uploadData="uploadData" :imageList="form.imageUrl" :limit="1"></upload-icons> + <span style="display: block;">(请上传1张设备图片)</span> + </el-form-item> + </el-form> + <template #footer> + <div class="dialog-footer"> + <el-button type="primary" @click="submitForm">确 定</el-button> + <el-button @click="cancel">取 消</el-button> + </div> + </template> + </el-dialog> + </div> </template> <style lang="scss" scoped> .form-box { - justify-content: normal; + justify-content: normal; + :deep(.el-cascader){ + flex-grow: 1; + } } </style> \ No newline at end of file diff --git a/src/views/screen/flow/shebei/index.vue b/src/views/screen/flow/shebei/index.vue index a588778..9162fed 100644 --- a/src/views/screen/flow/shebei/index.vue +++ b/src/views/screen/flow/shebei/index.vue @@ -1,7 +1,15 @@ <script setup> -import {ref} from "vue"; +import {ref, onMounted} from "vue"; import {getUserType} from '@/utils/auth.js' +import facilityApi from "@/api/facility/index"; +import { getFlowMenu } from '@/api/screen/shebei/index.js' +import setPostParams from "@/utils/searchParams.js"; +import { useRouter } from "vue-router"; +const router = useRouter(); + +const menuList = ref([]) +const deviceList = ref([]) const userType = ref(getUserType()) const monitorRef = ref() const searchVal = ref('') @@ -12,50 +20,57 @@ { label: '1个', value: 1 }, ]) -const shebeiData = ref([ - { name: '雷达水位计', code: 'SWY001', image: '', online: true, time: '2025-02-15', address: '上游灌木丛' }, - { name: '雷达水位计', code: 'SWY001', image: '', online: true, time: '2025-02-15', address: '上游灌木丛' }, - { name: '雷达水位计', code: 'SWY001', image: '', online: true, time: '2025-02-15', address: '上游灌木丛' }, - { name: '雷达水位计', code: 'SWY001', image: '', online: true, time: '2025-02-15', address: '上游灌木丛' }, - { name: '雷达水位计', code: 'SWY001', image: '', online: true, time: '2025-02-15', address: '上游灌木丛' }, - { name: '雷达水位计', code: 'SWY001', image: '', online: true, time: '2025-02-15', address: '上游灌木丛' }, - { name: '雷达水位计', code: 'SWY001', image: '', online: true, time: '2025-02-15', address: '上游灌木丛' }, - { name: '雷达水位计', code: 'SWY001', image: '', online: true, time: '2025-02-15', address: '上游灌木丛' }, -]) +// 获取菜单列表 +const getMenu = () => { + getFlowMenu().then(res => { + menuList.value = res.data + }) +} + +// 获取设备 +const getDataList = () => { + let postParam = setPostParams() + facilityApi().search({ ...postParam, keywords: searchVal.value }).then(res => { + deviceList.value = res.data.list + }) +} // 全屏操作 const handleFullScreen = () => { monitorRef.value.requestFullscreen() } +// 选择菜单 +const handleSelectMenu = (id) => { + facilityApi().get({ id }).then(res => { + deviceList.value = [res.data] + }) +} + +onMounted(() => { + getMenu() + getDataList() +}) </script> <template> <div class="shebei"> <div class="shebei-menu"> <div class="menu-t">设备列表</div> - <el-menu class="el-menu"> - <el-sub-menu index="1"> - <template #title> - <span>雷达水位计</span> + <el-menu class="el-menu-vertical-demo" @select="handleSelectMenu"> + <template v-for="(item, index) in menuList" :key="index+1"> + <template v-if="item?.facilityPOList?.length === 0"> + <el-menu-item :index="item.id">{{item.name}}</el-menu-item> </template> - <el-menu-item index="1-1">SWY001</el-menu-item> - <el-menu-item index="1-2">SWY002</el-menu-item> - </el-sub-menu> - <el-sub-menu index="2"> - <template #title> - <span>雷达测速仪</span> + <template v-else> + <el-sub-menu :index="item.id"> + <template #title> + <span>{{item.name}}</span> + </template> + <el-menu-item v-for="(child, cidx) in item.facilityPOList" :key="cidx" :index="child.id">{{child.facilityName}}</el-menu-item> + </el-sub-menu> </template> - <el-menu-item index="2-1">CY001</el-menu-item> - <el-menu-item index="2-2">CY002</el-menu-item> - </el-sub-menu> - <el-sub-menu index="3"> - <template #title> - <span>雷达流量计</span> - </template> - <el-menu-item index="3-1">LJL001</el-menu-item> - <el-menu-item index="3-2">LJL002</el-menu-item> - </el-sub-menu> + </template> </el-menu> </div> <div class="shebei-monitor"> @@ -75,9 +90,9 @@ :value="item.value" /> </el-select> - <el-input v-model="searchVal" style="width: 20rem" placeholder="请输入监测点名称" /> - <el-button><el-icon><Search /></el-icon>搜索</el-button> - <el-button style="margin-left: 0" v-if="userType === '1'"><el-icon><Plus /></el-icon>新增</el-button> + <el-input v-model="searchVal" style="width: 20rem" placeholder="请输入设备名称" /> + <el-button @click="getDataList"><el-icon><Search /></el-icon>搜索</el-button> + <el-button style="margin-left: 0" v-if="userType === '1'" @click="router.push('/facilityList')"><el-icon><Plus /></el-icon>新增</el-button> </div> <div class="tool-r" @click="handleFullScreen"> <img src="@/assets/images/flow/fullscreen.png" /> @@ -86,49 +101,49 @@ </div> <div class="monitor-box" ref="monitorRef"> <div class="list-six list" v-if="selectNum === 6"> - <div class="item" v-for="(item, index) in shebeiData" :key="index"> + <div class="item" v-for="(item, index) in deviceList" :key="index"> <div class="item-t"> - <div>{{item.name}}</div> - <div>{{item.code}}</div> + <div>{{item.facilityName}}</div> + <div>{{item.facilityCode}}</div> </div> <div class="item-img"> - <img v-if="item.image" :src="item.image" /> + <img v-if="item.image" :src="VITE_APP_IMG_BASEURL + item.image" alt="" /> </div> <div class="item-info"> - <div class="online">设备在线状态: <span :style="{color: item.online ? '#56d12c' : '#bababa'}">{{item.online ? '在线' : '掉线'}}</span></div> - <div class="time">安装时间: <span>{{item.time}}</span></div> + <div class="online">设备在线状态: <span :style="{color: item.isOnline ? '#56d12c' : '#bababa'}">{{item.isOnline ? '在线' : '掉线'}}</span></div> + <div class="time">安装时间: <span>{{item.installDate}}</span></div> <div class="address">安装位置: <span>{{item.address}}</span></div> </div> </div> </div> <div class="list-two list" v-else-if="selectNum === 2"> - <div class="item" v-for="(item, index) in shebeiData" :key="index"> + <div class="item" v-for="(item, index) in deviceList" :key="index"> <div class="item-t"> - <div>{{item.name}}</div> - <div>{{item.code}}</div> + <div>{{item.facilityName}}</div> + <div>{{item.facilityCode}}</div> </div> <div class="item-img"> - <img v-if="item.image" :src="item.image" /> + <img v-if="item.image" :src="VITE_APP_IMG_BASEURL + item.image" alt="" /> </div> <div class="item-info"> - <div class="online">设备在线状态: <span :style="{color: item.online ? '#56d12c' : '#bababa'}">{{item.online ? '在线' : '掉线'}}</span></div> - <div class="time">安装时间: <span>{{item.time}}</span></div> + <div class="online">设备在线状态: <span :style="{color: item.isOnline ? '#56d12c' : '#bababa'}">{{item.isOnline ? '在线' : '掉线'}}</span></div> + <div class="time">安装时间: <span>{{item.installDate}}</span></div> <div class="address">安装位置: <span>{{item.address}}</span></div> </div> </div> </div> <div class="list-one list" v-else-if="selectNum === 1"> - <div class="item" v-for="(item, index) in shebeiData" :key="index"> + <div class="item" v-for="(item, index) in deviceList" :key="index"> <div class="item-t"> - <div>{{item.name}}</div> - <div>{{item.code}}</div> + <div>{{item.facilityName}}</div> + <div>{{item.facilityCode}}</div> </div> <div class="item-img"> - <img v-if="item.image" :src="item.image" /> + <img v-if="item.image" :src="VITE_APP_IMG_BASEURL + item.image" alt="" /> </div> <div class="item-info"> - <div class="online">设备在线状态: <span :style="{color: item.online ? '#56d12c' : '#bababa'}">{{item.online ? '在线' : '掉线'}}</span></div> - <div class="time">安装时间: <span>{{item.time}}</span></div> + <div class="online">设备在线状态: <span :style="{color: item.isOnline ? '#56d12c' : '#bababa'}">{{item.isOnline ? '在线' : '掉线'}}</span></div> + <div class="time">安装时间: <span>{{item.installDate}}</span></div> <div class="address">安装位置: <span>{{item.address}}</span></div> </div> </div> -- Gitblit v1.9.3