已修改13个文件
已添加3个文件
已重命名1个文件
| | |
| | | ### |
| | | # @Author: hqs elkers@163.com |
| | | # @Date: 2024-05-16 11:24:17 |
| | | # @LastEditors: Liuyi candymxq888@outlook.com |
| | | # @LastEditTime: 2024-10-22 15:10:52 |
| | | # @FilePath: \wisdom-water-factory-web\.env.development |
| | | # @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE |
| | | ### |
| | | |
| | | # 页面标题 |
| | | VITE_APP_TITLE = 第四师高标准农田建设智慧灌溉信息化平台 |
| | | VITE_APP_TITLE = 生态流量监测系统 |
| | | |
| | | # 开发环境配置 |
| | | VITE_APP_ENV = 'development' |
| | | |
| | | # 智慧灌溉接口 |
| | | # 金川接口 |
| | | # VITE_APP_PUBLIC_REQUEST_API = 'http://113.250.189.120:8030' |
| | | VITE_APP_PUBLIC_REQUEST_API = 'https://wise.huiwuyuntong.com/farming-api' |
| | | VITE_APP_PUBLIC_REQUEST_API = 'http://113.250.189.120:8036' |
| | | #后端本地 |
| | | #VITE_APP_PUBLIC_REQUEST_API = 'http://192.168.0.105:8029' |
| | |
| | | ### |
| | | # @Author: hqs elkers@163.com |
| | | # @Date: 2024-05-16 11:24:17 |
| | | # @LastEditors: elkers dmhe0357 |
| | | # @LastEditTime: 2024-10-24 23:45:56 |
| | | # @FilePath: \wisdom-water-factory-web\.env.production |
| | | # @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE |
| | | ### |
| | | |
| | | # 页面标题 |
| | | VITE_APP_TITLE = 第四师高标准农田建设智慧灌溉信息化平台 |
| | | VITE_APP_TITLE = 生态流量监测系统 |
| | | |
| | | # 开发环境配置 |
| | | VITE_APP_ENV = 'production' |
| | | |
| | | # 智慧灌溉智慧管理系统/开发环境 |
| | | VITE_APP_PUBLIC_REQUEST_API = 'https://wise.huiwuyuntong.com/farming-api' |
| | | # VITE_APP_PUBLIC_REQUEST_API = 'http://113.250.189.120:8030' |
| | | # 金川管理系统/开发环境 |
| | | #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 |
| | |
| | | <meta name="renderer" content="webkit"> |
| | | <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"> |
| | | <link rel="icon" href="/favicon.ico"> |
| | | <title>金川水电站智慧监测平台</title> |
| | | <title>金川水电站生态流量监测系统</title> |
| | | <!--[if lt IE 11]><script>window.location.href='/html/ie.html';</script><![endif]--> |
| | | <style> |
| | | html, |
| | |
| | | { |
| | | "name": "jc-hydropower-station-web", |
| | | "version": "3.8.7", |
| | | "description": "金川水电站智慧监测平台", |
| | | "author": "智慧灌溉项目", |
| | | "description": "金川水电站生态流量监测系统", |
| | | "author": "金川项目", |
| | | "license": "MIT", |
| | | "type": "module", |
| | | "scripts": { |
| | |
| | | meta: { title: '报警管理'} |
| | | }, |
| | | { |
| | | path: '/pump', |
| | | component: () => import('@/views/screen/pump/index'), |
| | | path: '/reports', |
| | | component: () => import('@/views/screen/reports/index'), |
| | | name: 'pump', |
| | | meta: { title: '泵站控制'} |
| | | }, |
| | |
| | | <div class="main"> |
| | | <div class="header"> |
| | | <div class="top"> |
| | | <div class="title">金川水电站智慧监测平台</div> |
| | | <div class="title">金川水电站生态流量监测系统</div> |
| | | <div class="time"> |
| | | <span>{{ nowTime.date }}</span> |
| | | <span>{{ nowTime.time }}</span> |
| | |
| | | } |
| | | const btnList = ref([ |
| | | {name:'总览',url:'/overview'}, |
| | | {name:'智慧灌溉',url:'/irrigate'}, |
| | | // {name:'设备管理',url:'/facility-screen'}, |
| | | // {name:'DMA分区漏损', url:'/dma'}, |
| | | {name:'统计分析',url:'/statistics'}, |
| | | // {name:'报警管理',url:'/alarm-screen'}, |
| | | {name:'泵站控制',url:'/pump'}, |
| | | {name:'生态流量',url:'/irrigate'}, |
| | | {name:'图像监测', url:'/dma'}, |
| | | {name:'设备管理',url:'/facility-screen'}, |
| | | {name:'报警管理',url:'/alarm-screen'}, |
| | | {name:'报表管理',url:'/reports'}, |
| | | {name:'系统管理',url:'/user'}, |
| | | ]) |
| | | const navTo = (item) =>{ |
| | |
| | | routesData = setActiveRoute(routesData, views) //设置路由 |
| | | // console.log('组装完成',routesData) |
| | | routesData.forEach((item) => { |
| | | // console.log(router) |
| | | console.log(222222,router) |
| | | //路由数据解析完成,开始添加到本地路由表中 |
| | | router.addRoute('/', item); |
| | | // console.log('item',item) |
| | | }); |
| | | console.log('router', router.getRoutes()) |
| | | //console.log('router', router.getRoutes()) |
| | | } |
| | | } |
| | | import Layout from '@/layout' |
对比新文件 |
| | |
| | | <!-- |
| | | * @Author: elkers |
| | | * @Date: 2024-08-06 16:17:39 |
| | | * @LastEditors: Liuyi candymxq888@outlook.com |
| | | * @LastEditTime: 2024-08-14 09:34:55 |
| | | * @FilePath: \water-qinghe-web\src\views\waterMeter\supplier\index.vue |
| | | * @Description: 供应商 |
| | | --> |
| | | |
| | | <script setup> |
| | | import supplierApi from "@/api/waterMeterApi/supplier"; |
| | | import { nameReg ,phoneReg } from "@/utils/regular"; |
| | | import setPostParams from "../../../utils/searchParams.js"; |
| | | |
| | | const { proxy } = getCurrentInstance(); |
| | | |
| | | /** |
| | | * 搜索相关 |
| | | */ |
| | | /** 搜索按钮操作 */ |
| | | function handleQuery() { |
| | | getList({keywords:searchParams.value.name}) |
| | | } |
| | | |
| | | /** 重置按钮操作 */ |
| | | function resetQuery() { |
| | | proxy.resetForm("queryRef"); |
| | | handleQuery(); |
| | | } |
| | | |
| | | /** |
| | | * Table表格权限数据列表相关 |
| | | */ |
| | | const searchParam = { |
| | | limit:10, |
| | | page:1 |
| | | } |
| | | const pageParam = ref({ |
| | | total:0, |
| | | limit:0, |
| | | page:1, |
| | | }) |
| | | const tableData = ref([]); |
| | | const inpTip= '请输入',selTip = '请选择'; |
| | | let tableHeader = ref({ |
| | | name: '供应商名称', |
| | | address: '供应商地址', |
| | | contact:'联系人', |
| | | contactPhone:'联系人电话', |
| | | createTimeView:'创建时间' |
| | | }) |
| | | /** 获取列表 */ |
| | | async function getList(val) { |
| | | loading.value = true; |
| | | let postParam = setPostParams(val) |
| | | await supplierApi().search(postParam).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 = ({ |
| | | name: '供应商名称', |
| | | address: '供应商地址', |
| | | contact:'联系人', |
| | | contactPhone:'联系人电话', |
| | | createTimeView:'创建时间' |
| | | }) |
| | | const rules = ref({ |
| | | name: [{ required: true, message: `${inpTip+formLabel.name}`, trigger: "blur" } |
| | | |
| | | ], |
| | | address: [{ required: true, message: `${inpTip+formLabel.address}`, trigger: "blur" }], |
| | | contact: [ |
| | | { required: true, message: `${inpTip+formLabel.contact}`, trigger: "blur" }, |
| | | { pattern: nameReg, message: '请输入真实姓名!', trigger: 'blur' }, |
| | | ], |
| | | contactPhone: [ |
| | | { required: true, message: `${inpTip+formLabel.contactPhone}`, trigger: "blur" }, |
| | | { pattern: phoneReg, message: '电话号码不正确!', trigger: 'blur' }, |
| | | ], |
| | | }); |
| | | const form = ref({}); |
| | | const searchParams = ref({ |
| | | keywords: '', |
| | | }); |
| | | /** 新增按钮操作 */ |
| | | async function handleAdd() { |
| | | reset(); |
| | | open.value = true; |
| | | title.value = "新增"; |
| | | } |
| | | |
| | | /** 修改按钮操作 */ |
| | | async function handleUpdate(row) { |
| | | reset(); |
| | | // form.value = Object.assign({},row) |
| | | Object.keys(row).forEach(key => { |
| | | if (form.value.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 supplierApi().remove(row.id); |
| | | }).then(() => { |
| | | getList(); |
| | | proxy.$modal.msgSuccess("删除成功"); |
| | | }).catch(() => {}); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 新增/修改弹窗Form表单相关 |
| | | */ |
| | | const open = ref(false); |
| | | const loading = ref(false); |
| | | const title = ref(""); |
| | | |
| | | //上传文件,添加图片地址信息 |
| | | const uploadData = (data) => { |
| | | form.value.headImg = data.newFileView |
| | | } |
| | | /** 提交按钮 */ |
| | | function submitForm() { |
| | | proxy.$refs["supplierRef"].validate(valid => { |
| | | if (valid) { |
| | | form.value.contactPhone = Number(form.value.contactPhone) |
| | | if (form.value.id != undefined) { |
| | | supplierApi().modify(form.value).then(res => { |
| | | proxy.$modal.msgSuccess("修改成功"); |
| | | open.value = false; |
| | | getList(); |
| | | }).catch(() =>{ |
| | | open.value = false; |
| | | proxy.$modal.msgError("修改失败"); |
| | | }); |
| | | } else { |
| | | supplierApi().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(); |
| | | } |
| | | |
| | | /** 表单重置 */ |
| | | function reset() { |
| | | form.value = { |
| | | name: '', |
| | | address: '', |
| | | contact:'', |
| | | contactPhone:'' |
| | | }; |
| | | proxy.resetForm("supplierRef"); |
| | | } |
| | | getList(); |
| | | </script> |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-form :model="searchParams" ref="queryRef" :inline="true"> |
| | | <el-form-item label="" prop=""> |
| | | <el-input |
| | | v-model="searchParams.name" |
| | | 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.toString() == 'headImg'"> |
| | | <img :src="scope.row.headImg" class="table-headImg"/> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="操作" width="180" 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="supplierRef" :model="form" :rules="rules" label-width='auto'> |
| | | <el-form-item :label="formLabel.name" prop="name"> |
| | | <el-input v-model="form.name" :placeholder="inpTip+formLabel.name"/> |
| | | </el-form-item> |
| | | <el-form-item :label="formLabel.address" prop="address"> |
| | | <el-input v-model="form.address" :placeholder="inpTip+formLabel.address" /> |
| | | </el-form-item> |
| | | <el-form-item :label="formLabel.contact" prop="contact"> |
| | | <el-input v-model="form.contact" :placeholder="inpTip+formLabel.contact" /> |
| | | </el-form-item> |
| | | <el-form-item :label="formLabel.contactPhone" prop="contactPhone"> |
| | | <el-input v-model="form.contactPhone" :placeholder="inpTip+formLabel.contactPhone" /> |
| | | </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> |
| | | .el-form{ |
| | | width: 100%; |
| | | display: flex; |
| | | justify-content: space-evenly; |
| | | flex-wrap: wrap; |
| | | .el-form-item{ |
| | | width: 45%; |
| | | } |
| | | } |
| | | </style> |
| | | |
| | |
| | | const pageParam = ref({ |
| | | total: 0, |
| | | limit: 0, |
| | | page: 1, |
| | | page: 1,q |
| | | }) |
| | | const tableData = ref([]); |
| | | const inpTip = '请输入', selTip = '请选择'; |
| | |
| | | <div class="login-bcg1"></div> |
| | | <div class="contain"> |
| | | <el-form ref="loginRef" :model="loginForm" :rules="loginRules" class="login-form"> |
| | | <h3 class="title">金川水电站智慧监测平台</h3> |
| | | <h3 class="title">金川水电站生态流量监测系统</h3> |
| | | <el-form-item label="账 号" prop="userName"> |
| | | <el-input |
| | | style="height: 45px;" |
| | |
| | | localStorage.setItem('id',JSON.stringify(res.data.id)) |
| | | localStorage.setItem('userType',JSON.stringify(res.data.userType)) |
| | | |
| | | router.push("/overview"); |
| | | router.push("/user");//overview |
| | | }).catch(error => { |
| | | loading.value = false; |
| | | proxy.$modal.msgError('登录失败!') |
| | |
| | | <div class="dma-container"> |
| | | <div class="content"> |
| | | <div class="left"> |
| | | <div class="echarts-box"> |
| | | <!-- <div class="echarts-title">压力监测</div> --> |
| | | <div class="titbox"> |
| | | <img src="../../../assets/images/screen/irrigate/titbox.png" alt="" srcset=""> |
| | | <span>压力监测</span> |
| | | </div> |
| | | <div id="pressure"></div> |
| | | </div> |
| | | <div class="echarts-box"> |
| | | <div class="titbox"> |
| | | <img src="../../../assets/images/screen/irrigate/titbox.png" alt="" srcset=""> |
| | | <span>流量监测</span> |
| | | </div> |
| | | <div id="entrance"></div> |
| | | </div> |
| | | <div class="echarts-box"> |
| | | <div class="titbox"> |
| | | <img src="../../../assets/images/screen/irrigate/titbox.png" alt="" srcset=""> |
| | | <span>水位监测</span> |
| | | </div> |
| | | <div id="analysis"></div> |
| | | </div> |
| | | |
| | | </div> |
| | | <div class="main"> |
| | | <div class="map"> |
| | | <div class="map-img"> |
| | | <img src="../../../assets/images/screen/overview/map.png"> |
| | | |
| | | </div> |
| | | <img class="circle" src="../../../assets/images/screen/overview/mini-circle.png"/> |
| | | </div> |
| | | <div class="table-box"> |
| | | <el-table v-loading="loading" :data="landMassList" max-height="250px"> |
| | | <el-table-column |
| | | v-for="(item, key, index) of tableHeader" |
| | | :prop="key.toString()" |
| | | :label="item" |
| | | :key="index" |
| | | align="center" |
| | | ></el-table-column> |
| | | </el-table> |
| | | </div> |
| | | </div> |
| | | <!-- 右 ------------------------------------------ --> |
| | | <div class="right"> |
| | | <!-- <div class="search"> |
| | | <el-select v-model="pointId" filterable placeholder="请选择监控点"> |
| | | <el-option |
| | | v-for="(item,index) in pointList" |
| | | :key="index" |
| | | :label="item.pointName" |
| | | :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | <el-button type="primary" class="search-btn" @click="searchPoint">搜 索</el-button> |
| | | </div> --> |
| | | <div id="alarm"> |
| | | |
| | | <div class="titbox"> |
| | | <img src="../../../assets/images/screen/irrigate/titbox.png" alt="" srcset=""> |
| | | <span>实时报警</span> |
| | | </div> |
| | | <div class="alarm-content"> |
| | | <div v-for="(item,index) in alarmList" :key="index" class="alarm-item"> |
| | | |
| | | <div class="item-text">{{ item.description }}</div> |
| | | <div class="item-date">{{ item.createTimeView }}</div> |
| | | </div> |
| | | </div> |
| | | <div v-if="alarmList.length > 5" class="alarm-more">.........</div> |
| | | </div> |
| | | <div class="echarts-box"> |
| | | <div class="titbox"> |
| | | <img src="../../../assets/images/screen/irrigate/titbox.png" alt="" srcset=""> |
| | | <span>频率监测</span> |
| | | </div> |
| | | <div id="flow"></div> |
| | | </div> |
| | | <div class="echarts-box"> |
| | | <div class="titbox"> |
| | | <img src="../../../assets/images/screen/irrigate/titbox.png" alt="" srcset=""> |
| | | <span>设备监测</span> |
| | | </div> |
| | | <div id="liquidLevel"></div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
对比新文件 |
| | |
| | | <template> |
| | | <div class="facility-container"> |
| | | |
| | | <div class="right-content"> |
| | | <div class="search-box"> |
| | | |
| | | <el-select v-model="pointId" filterable placeholder="请选择报表"> |
| | | <el-option |
| | | v-for="(item,index) in reportedList" |
| | | :key="index" |
| | | :label="item.name" |
| | | :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | |
| | | <el-select v-model="pointId" filterable placeholder="请选择监控点"> |
| | | <el-option |
| | | v-for="(item,index) in pointList" |
| | | :key="index" |
| | | :label="item.pointName" |
| | | :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | <div class="date"> |
| | | <div v-for="item in dateList" :class="item.active === 1 ? 'date-active' : '' " @click="changeDate(item.dictValue)">{{item.dictLabel}}</div> |
| | | </div> |
| | | <el-button class="search-btn" @click="searchPoint">搜索</el-button> |
| | | <el-button class="search-btn" @click="exportToExcel">导出</el-button> |
| | | </div> |
| | | <div class="table-box"> |
| | | <div class="table-title">{{reportName}}报表</div> |
| | | <div class="table-content"> |
| | | <el-table v-loading="loading" :data="tableData" width="100%" max-height="690px"> |
| | | <el-table-column |
| | | label="序号" |
| | | align="center" |
| | | prop="num" |
| | | fixed="left" |
| | | > |
| | | </el-table-column> |
| | | <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.toString() === 'detail'" class="table-handle"> |
| | | <div @click="toDetail(scope.row)"></div> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </div> |
| | | <div class="pagination"> |
| | | <el-pagination |
| | | v-model:current-page="pageParam.page" |
| | | background |
| | | :page-size="pageParam.limit" |
| | | layout="total,prev, pager, next, jumper" |
| | | :total="pageParam.total" |
| | | @current-change="currentPage" |
| | | /> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script setup> |
| | | import pointApi from "@/api/facility/point"; |
| | | import { sysDictData } from '@/api/system/dict' |
| | | import { PREURL} from '@/config/index' |
| | | // import * as XLSX from 'xlsx'; |
| | | import defaultImage from '@/assets/images/screen/facility/no-img.png' |
| | | //导出 |
| | | // const exportToExcel = () => { |
| | | // const dataVal = hisData.value |
| | | // const worksheet = XLSX.utils.json_to_sheet(dataVal); |
| | | // const workbook = XLSX.utils.book_new(); |
| | | // XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1'); |
| | | // XLSX.writeFile(workbook, 'data.xlsx'); |
| | | // }; |
| | | |
| | | |
| | | const dateList = ref() |
| | | const dateValue = ref() |
| | | const getDate = async () =>{ |
| | | await sysDictData().searchType('date_type').then((res)=>{ |
| | | dateList.value = res.data |
| | | dateList.value.forEach((item,index)=>{ |
| | | if(index === 0){ |
| | | item.active = 1 |
| | | }else{ |
| | | item.active = 0 |
| | | } |
| | | item.dictLabel = item.dictLabel.replace('统计','') |
| | | }) |
| | | dateValue.value = dateList.value[0].dictValue |
| | | }) |
| | | } |
| | | getDate() |
| | | //选中日期 |
| | | const changeDate = (dateType) =>{ |
| | | dateValue.value = dateType |
| | | dateList.value.forEach((item)=>{ |
| | | item.active = 0 |
| | | if(item.dictValue === dateType){ |
| | | item.active = 1 |
| | | } |
| | | }) |
| | | getData({dateType:dateValue.value,pointId:pointId.value}) |
| | | } |
| | | //监控点列表 |
| | | const pointList = ref([]) |
| | | const pointId = ref(); |
| | | const getPointList = async() =>{ |
| | | |
| | | //区域列表 |
| | | let res = await pointApi().search({limit: 100, page: 1}) |
| | | if(res.code == 200){ |
| | | pointList.value = res.data.list |
| | | pointId.value = pointList.value[0].id |
| | | console.log("获取监控点数据",pointList.value); |
| | | }else{ |
| | | proxy.$modal.msgError('获取数据失败,请刷新再试!') |
| | | } |
| | | } |
| | | getPointList() |
| | | //选中数据 |
| | | const searchPoint = () =>{ |
| | | getData({dateType:dateValue.value,pointId:pointId.value}) |
| | | } |
| | | //选择报表类型 |
| | | const reportedList = ref([ |
| | | {id:1,name:"压力报表"}, |
| | | {id:2,name:"水质报表"}, |
| | | ]) |
| | | |
| | | |
| | | //搜索 |
| | | const searchParam = ref() |
| | | const searchList = () =>{ |
| | | getTableData({keywords:searchParam.value}) |
| | | } |
| | | const reportName = ref("压力") |
| | | /** |
| | | * Table表格权限数据报表相关 |
| | | */ |
| | | const pageParam = ref({ |
| | | total:200, |
| | | limit:15, |
| | | page:1, |
| | | }) |
| | | const tableData = ref([]); |
| | | let tableHeader = ref({ |
| | | pointName: "所属设备", |
| | | pointyName: "数据1", |
| | | address2: "数据2", |
| | | installDate3: "数据3", |
| | | detail2: "采集时间", |
| | | }) |
| | | |
| | | /** 获取报表 */ |
| | | const loading = ref(false); |
| | | async function getTableData(val) { |
| | | loading.value = true; |
| | | if(val){ |
| | | if(!val.limit){ |
| | | val.limit = 5 |
| | | } |
| | | if(!val.page){ |
| | | val.page = 1 |
| | | } |
| | | }else{ |
| | | val = { limit:5,page:1 } |
| | | } |
| | | await pointApi().search(val).then((res) =>{ |
| | | tableData.value = res.data.list |
| | | //添加序号 |
| | | tableData.value.forEach((item,index) =>{ |
| | | item.num = index + 1 |
| | | }) |
| | | //设置详情为tableData第一项 |
| | | formDetail.value.facilityName = tableData.value[0].facilityName |
| | | formDetail.value.supplier = tableData.value[0].supplier |
| | | formDetail.value.installDate = tableData.value[0].installDate |
| | | formDetail.value.facilityUrl = tableData.value[0].facilityUrl |
| | | console.log('formDetail.value.facilityUrl',formDetail.value.facilityUrl) |
| | | //分页参数 |
| | | pageParam.value.total = res.data.total |
| | | pageParam.value.limit = res.data.limit |
| | | pageParam.value.page = res.data.page |
| | | }) |
| | | loading.value = false; |
| | | } |
| | | //分页 |
| | | const currentPage = (val) =>{ |
| | | getTableData({page:val}) |
| | | } |
| | | // 详情 |
| | | |
| | | const formDetail = ref({ |
| | | facilityName:'', |
| | | supplier:'', |
| | | installDate:'', |
| | | facilityUrl:'', |
| | | }) |
| | | const defaultImg = ref(defaultImage) |
| | | const toDetail = (row) =>{ |
| | | formDetail.value.facilityName = row.facilityName |
| | | formDetail.value.supplier = row.supplier |
| | | formDetail.value.installDate = row.installDate |
| | | formDetail.value.facilityUrl = row.facilityUrl |
| | | console.log('todetail',formDetail.value.facilityUrl) |
| | | } |
| | | const backgroundStyle = computed(() => ({ |
| | | backgroundImage: `url('${ PREURL+ formDetail.value.facilityUrl }')`, |
| | | backgroundSize: 'contain', |
| | | backgroundRepeat: 'no-repeat', |
| | | backgroundPosition: 'center', |
| | | })); |
| | | onMounted(async ()=>{ |
| | | await getTableData() |
| | | }) |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .facility-container{ |
| | | width: 100%; |
| | | height:100%; |
| | | padding:0 3% 1% 3%; |
| | | display:flex; |
| | | justify-content: space-between; |
| | | } |
| | | .left-content{ |
| | | width:22%; |
| | | height:100%; |
| | | background-image: url("../../../assets/images/screen/facility/left-box.png"); |
| | | background-repeat: no-repeat; |
| | | background-size: 100% 100%; |
| | | padding:4% 1% 1%; |
| | | .left-title{ |
| | | width: 100%; |
| | | height:5%; |
| | | background-image: url("../../../assets/images/screen/facility/left-title.png"); |
| | | background-repeat: no-repeat; |
| | | background-size: 100% 100%; |
| | | font-weight: 400; |
| | | font-size: 20px; |
| | | color: #FFFFFF; |
| | | padding-left:9%; |
| | | padding-top:1%; |
| | | } |
| | | .img-box{ |
| | | width:83%; |
| | | height:35%; |
| | | background: rgba(244, 248, 250, 0.21); |
| | | border-radius: 10px; |
| | | margin: 15% auto 0; |
| | | padding: 1%; |
| | | .left-img{ |
| | | width:100%; |
| | | height:100%; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | } |
| | | } |
| | | .left-detail{ |
| | | width:100%; |
| | | height: 30%; |
| | | //background: rgba(255, 255, 255, 0.29); |
| | | padding:6% 10% 10%; |
| | | p{ |
| | | font-weight: 400; |
| | | font-size: 16px; |
| | | color: #FFFFFF; |
| | | //background: rgba(0, 175, 240, 0.51); |
| | | } |
| | | } |
| | | } |
| | | .right-content{ |
| | | width:100%;//698 |
| | | height:100%;//918.7 |
| | | display:flex; |
| | | justify-content: space-between; |
| | | flex-direction: column; |
| | | align-items: center; |
| | | padding:1% 0; |
| | | .date{ |
| | | |
| | | width: 322px; |
| | | height: 50px; |
| | | background-image: url("../../../assets/images/screen/statistics/date.png"); |
| | | background-repeat: no-repeat; |
| | | background-size: 100% 100%; |
| | | margin: 0 20px; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content:center; |
| | | font-weight: 400; |
| | | font-size: 18px; |
| | | color: #DDDDDD; |
| | | div{ |
| | | width: 25%; |
| | | height: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | } |
| | | .date-active{ |
| | | background-image: url("../../../assets/images/screen/statistics/select-date.png"); |
| | | } |
| | | } |
| | | .search-box{ |
| | | width:100%; |
| | | height:6%; |
| | | display: flex; |
| | | :deep(.el-select__wrapper){ |
| | | height: 50%; |
| | | width: 100%; |
| | | background:transparent !important; |
| | | border: 1px solid #1fb0be !important; |
| | | border-radius: 5px 0 0 5px; |
| | | } |
| | | .search-input{ |
| | | width:70%; |
| | | height:100%; |
| | | margin-right:3%; |
| | | :deep(.el-input__wrapper){ |
| | | background:linear-gradient(to right ,rgba(6,92,135,0.56),rgba(6,92,135,0.16)) !important; |
| | | border: 1px solid #1fb0be !important; |
| | | border-radius: 8px !important; |
| | | } |
| | | .el-input.is-focus .el-input__inner{ |
| | | border-color: #2ec4d2 !important; |
| | | } |
| | | } |
| | | .search-btn{ |
| | | width:7%; |
| | | height:100%; |
| | | background-color: #2a6bb6 !important; |
| | | border: 1px solid #03e9ff !important; |
| | | border-radius: 8px !important; |
| | | font-weight: 400; |
| | | font-size: 22px; |
| | | color: #B9F9FF; |
| | | } |
| | | } |
| | | .table-box{ |
| | | width:100%; |
| | | height:89%; |
| | | background-image: url("../../../assets/images/screen/facility/right-box.png"); |
| | | background-repeat: no-repeat; |
| | | background-size: 100% 100%; |
| | | .table-title{ |
| | | height:10%; |
| | | width:100%; |
| | | display: flex; |
| | | justify-content:center; |
| | | align-items: center; |
| | | font-weight: 500; |
| | | font-size: 22px; |
| | | color: #8DFEFF; |
| | | } |
| | | .table-content{ |
| | | height:80%; |
| | | width:100%; |
| | | padding: 1% 4%; |
| | | //background: #1D2129; |
| | | //修改边框和字体 |
| | | :deep(.el-table){ |
| | | --el-table-border-color:rgba(0,0,0,0); |
| | | font-weight: 400; |
| | | font-size: 20px; |
| | | color: #D1D1D1; |
| | | } |
| | | //修改头部字体 |
| | | :deep(.el-table__header th){ |
| | | font-weight: 400; |
| | | font-size: 20px; |
| | | color: #D1D1D1; |
| | | } |
| | | /*最外层透明*/ |
| | | :deep(.el-table), |
| | | :deep(.el-table__expanded-cell){ |
| | | background-color: transparent !important; |
| | | } |
| | | /* 表格内背景颜色 */ |
| | | :deep(.el-table th), |
| | | :deep(.el-table tr), |
| | | :deep(.el-table td){ |
| | | background-color: transparent !important; |
| | | border-bottom:1px solid #1D627D !important; |
| | | } |
| | | //:deep(.el-table tr){ |
| | | // border:1px solid #000 !important; |
| | | //} |
| | | /*去除底边框*/ |
| | | :deep(.el-table td.el-table__cell){ |
| | | border:0; |
| | | } |
| | | :deep(.el-table th.el-table__cell.is-leaf) { |
| | | border: 0; |
| | | } |
| | | /*去除底部灰条.el-table::before*/ |
| | | :deep(.el-table::before) { |
| | | display: none; |
| | | } |
| | | .table-handle{ |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | div{ |
| | | width:30px; |
| | | height: 30px; |
| | | background-image: url("../../../assets/images/screen/facility/detail.png"); |
| | | } |
| | | } |
| | | } |
| | | .pagination{ |
| | | width:100%; |
| | | height:10%; |
| | | display:flex; |
| | | justify-content:center; |
| | | :deep(.el-pagination__total), |
| | | :deep(.el-pagination__goto), |
| | | :deep(.el-pagination__classifier){ |
| | | color: #bcd4f3 |
| | | } |
| | | :deep(.el-pager li) { |
| | | font-size: 15px; |
| | | color: #BAEBEC; |
| | | background: transparent; |
| | | padding: 0 4px; |
| | | border: 1px solid #BAEBEC; |
| | | border-radius: 0; |
| | | margin: 0 4px; |
| | | min-width: 25px; |
| | | height: 25px; |
| | | } |
| | | :deep(.el-pagination button) { |
| | | color: #BAEBEC; |
| | | background: transparent; |
| | | padding: 0 4px; |
| | | border-radius: 0; |
| | | margin: 0 4px; |
| | | } |
| | | :deep(.el-pagination .btn-next .el-icon), |
| | | :deep(.el-pagination .btn-prev .el-icon) { |
| | | font-size: 18px !important; |
| | | } |
| | | :deep(.el-input__wrapper) { |
| | | background: transparent; |
| | | box-shadow: 0 0 0 1px #BAEBEC inset; |
| | | border-radius: 0; |
| | | height: 25px; |
| | | min-width: 30px; |
| | | } |
| | | :deep(.el-input__inner) { |
| | | font-size: 16px; |
| | | color: #BAEBEC; |
| | | height: 25px; |
| | | line-height: 30px !important; |
| | | } |
| | | :deep(.el-pager li.is-active) { |
| | | background-color: #1FB0BE; |
| | | color: #ffffff; |
| | | border: 1px solid #1FB0BE; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </style> |
| | |
| | | <el-form-item v-if="!form.id"> |
| | | <br> |
| | | </el-form-item> |
| | | <el-form-item label="上传头像" prop="headImg"> |
| | | <el-form-item label="上传头像" prop=""> |
| | | <upload-icons @uploadData="uploadData" :imageList="form.headImg" :limit="1"></upload-icons> |
| | | </el-form-item> |
| | | <el-form-item></el-form-item> |
| | |
| | | let tableHeader = ref({ |
| | | userName: '用户名称', |
| | | nickName: '昵称', |
| | | headImg:'头像', |
| | | // headImg:'头像', |
| | | userTypeView:'用户类型', |
| | | // userTypeView:'用户角色', |
| | | contact:'联系方式', |
| | |
| | | }, |
| | | // vite 相关配置 |
| | | server: { |
| | | port: 5030, |
| | | port: 5036, |
| | | host: true, |
| | | open: true, |
| | | proxy: { |