From f7bd94cf4a3d6ce6b06c2f90413f6798c488481d Mon Sep 17 00:00:00 2001 From: batman <978517621@qq.com> Date: 星期三, 15 三月 2023 10:21:22 +0800 Subject: [PATCH] 修改特殊作业首页 --- src/views/intellectInspect/inspectIndex/index.vue | 1241 ++++++++++++++++++++++++++++++++++++++++++++-------------- 1 files changed, 942 insertions(+), 299 deletions(-) diff --git a/src/views/intellectInspect/inspectIndex/index.vue b/src/views/intellectInspect/inspectIndex/index.vue index 80b5cbb..be79359 100644 --- a/src/views/intellectInspect/inspectIndex/index.vue +++ b/src/views/intellectInspect/inspectIndex/index.vue @@ -1,43 +1,195 @@ <template> - <div class="home-container"> + <div class="home-container" :class="isFull==true?'container':''" id="bigScreen"> + <div class="full"> + <el-button v-if="isFull==false" type="text" style="height: 34px" @click="toFullscreen"> + <el-icon style="vertical-align: middle"> + <FullScreen /> + </el-icon> + <span style="vertical-align: middle">全屏</span> + </el-button> + <el-button v-else type="text" style="height: 34px" @click="toFullscreen"> + <el-icon style="vertical-align: middle"> + <Close /> + </el-icon> + <span style="vertical-align: middle">退出全屏</span> + </el-button> + </div> <div style="height: 100%"> - <div class="homeCard topCard"> - <div class="title"> - 当前巡检任务 - </div> - <div class="top-info" v-if="unchecked!=0||unusual!=0"> - <el-icon :size="18" color="#F3001E" style="margin-right: 4px"><BellFilled /></el-icon> - 预警消息: - <div v-if="unchecked!=0">当日超期未巡检任务<span @click="toOverTime(4)">{{unchecked}}</span>个</div><span v-if="unchecked!=0&&unusual!=0">,</span> - <div v-if="unusual!=0">存在异常任务<span @click="toUnusual(1)">{{unusual}}</span>个</div>。 - </div> + <div class="topChart"> + <div class="chart-item"> + <div class="chart-tit"> + <span class="tit">年度巡检异常趋势</span> + </div> + <div class="chart" :id="xjLine"></div> </div> - <div class="homeCard"> - <div class="main-card"> - <div class="list"> - <div class="cardTop" v-for="(item,index) in tableData" :key="index"> - <div class="left-info"> - <span class="num">{{pageSize * (pageIndex-1) + index + 1}}、</span> - <span class="place">{{item.taskName}},</span> - <p v-if="item.execUserName==null">该任务暂无人认领</p> - <p v-else><span class="time">{{item.taskStatus == 2?item.startTime:item.endTime}}</span>由<span class="name">{{item.execUserName}}</span>进行的巡检任务</p> - </div> - <div class="mid-info"> - 任务状态:<span :class="item.taskStatus == 1?'grey':(item.taskStatus == 2?'green':(item.taskStatus == 3?'blue':'red'))">{{item.taskStatus == 1?'待巡检':(item.taskStatus == 2?'巡检中':(item.taskStatus == 3?'已巡检':'超期未巡检'))}}</span> - </div> - <div class="right-info"> - <div v-if="item.taskStatus == 2" @click="toLine(item)" class="checkBtn">查看实时巡检</div> - <div v-else class="reviewBtn" @click="toDetails('查看',item)">[查看巡检记录]</div> - </div> + <div class="chart-item"> + <div class="chart-tit"> + <span class="tit">异常区域设备统计</span> + <div class="filter-part"> + <el-switch + v-model="chartStatus" + inline-prompt + style="--el-switch-on-color: #13ce66; --el-switch-off-color: #13ce66" + active-text="区域" + inactive-text="设备" + /> + </div> + </div> + <div class="chart" :id="sbtj"></div> + <el-radio-group v-model="period" size="small"> + <el-radio border label="week">近7天</el-radio> + <el-radio border label="month">近30天</el-radio> + <el-radio border label="season">近90天</el-radio> + <el-radio border label="year">近一年</el-radio> + </el-radio-group> + </div> + </div> + <div class="midChart"> + <div class="chart-item"> + <div class="chart-tit"> + <div style="display: flex;align-items: center"> + <span class="tit">当前巡检任务</span> + <div class="top-info" v-if="unchecked != 0 || unusual != 0"> + <el-icon :size="18" color="#F3001E" style="margin-right: 4px"><BellFilled /></el-icon> + <div>预警消息:</div> + <div v-if="unchecked != 0"> + 当日超期未巡检任务<el-tooltip + class="box-item" + effect="light" + content="查看相关记录" + placement="bottom-start" + ><span @click="toOverTime(4)">{{ unchecked }}</span></el-tooltip>个 + </div> + <span v-if="unchecked != 0 && unusual != 0">,</span> + <div v-if="unusual != 0"> + 存在异常任务<el-tooltip + class="box-item" + effect="light" + content="查看相关记录" + placement="bottom-start" + ><span @click="toOverTime(5)">{{ unusual }}</span + ></el-tooltip>个 + </div> + 。 + </div> + </div> + <div class="checkAll" @click="checkAllRecord()"> + 全部记录>> + </div> + </div> + <div class="chart"> + <el-table :data="tableData" stripe border :header-cell-style="{ background: '#fafafa' }"> + <el-table-column label="任务信息" align="center"> + <template #default="scope"> + <div class="left-info"> + <span>{{ scope.row.taskName }},</span> + <p v-if="scope.row.execUserName == null">该任务暂无人认领</p> + <p v-else> + <span class="time">{{ scope.row.taskStatus == 2 ? scope.row.startTime : scope.row.endTime }}</span>由<span class="name">{{ scope.row.execUserName }}</span>进行的巡检任务 + </p> </div> - </div> - <div class="pageBtn"> - <el-pagination v-model:currentPage="pageIndex" v-model:page-size="pageSize" :page-sizes="[10, 15]" small="false" background layout="total, sizes, prev, pager, next, jumper" :total="totalSize" @size-change="handleSizeChange" @current-change="handleCurrentChange" /> - </div> + </template> + </el-table-column> + <el-table-column prop="taskStatus" label="任务状态" align="center" width="180"> + <template #default="scope"> + <span :class="scope.row.taskStatus == 1 ? 'grey' : scope.row.taskStatus == 2 ? 'green' : scope.row.taskStatus == 3 ? 'blue' : 'red'">{{ scope.row.taskStatus == 1 ? '待巡检' : scope.row.taskStatus == 2 ? '巡检中' : scope.row.taskStatus == 3 ? '已巡检' : '超期未巡检' }}</span> + </template> + </el-table-column> + <el-table-column label="操作" align="center" width="180"> + <template #default="scope"> + <el-button type="text" size="small" v-if="scope.row.taskStatus == 2" @click="toLine(scope.row)" class="checkBtn">查看实时巡检</el-button> + <el-button type="text" size="small" v-else class="reviewBtn" @click="toDetails('查看', scope.row)">查看巡检记录</el-button> + </template> + </el-table-column> + </el-table> </div> + </div> </div> + <div class="midChart"> + <div class="chart-item"> + <div class="chart-tit"> + <span class="tit">巡检异常清单</span> + <div class="checkAll" @click="checkAllList()"> + 全部记录>> + </div> + </div> + <div class="chart"> + <el-table :data="unusualData" stripe border :header-cell-style="{ background: '#fafafa' }"> + <el-table-column prop="workOrderNum" label="工单编号" align="center"/> + <el-table-column prop="pointCode" label="异常巡检点" align="center"/> + <el-table-column prop="occurrenceTime" label="巡检(发现)时间" align="center"/> + <el-table-column prop="taskName" label="所属巡检任务" align="center"/> + <el-table-column prop="regionName" label="设备/区域名称" align="center"/> + <el-table-column prop="refer" label="正常参考值" align="center"> + <template #default="scope"> + <span>{{scope.row.dataReportType==1?(scope.row.firstReferenceValue==0?'正常':'异常'):scope.row.dataReportType==2?((scope.row.secondReferenceSignscope==1?'>':'>=') + scope.row.secondReferenceValue + ',' + (scope.row.thirdReferenceSign==3?'<':'<=') + scope.row.thirdReferenceValue): ((scope.row.firstReferenceValue==0?'正常':'异常') + ',' + ((scope.row.secondReferenceSignscope==1?'>':'>=') + scope.row.secondReferenceValue + ',' + (scope.row.thirdReferenceSign==3?'<':'<=') + scope.row.thirdReferenceValue))}}</span> + </template> + </el-table-column> + <el-table-column label="实际巡检值" align="center"> + <template #default="scope"> + <span>{{scope.row.dataReportType==1?(scope.row.firstReferenceResult==0?'正常':'异常'):scope.row.dataReportType==2?scope.row.secondReferenceResult:(scope.row.firstReferenceResult==0?'正常':'异常') + ',' + scope.row.secondReferenceResult}}</span> + </template> + </el-table-column> + <el-table-column prop="hiddenDangerHandlerName" label="隐患处置人" align="center"/> + <el-table-column prop="hiddenDangerHandlerPhone" label="电话" align="center"/> + <el-table-column prop="handlerStatus" label="处置状态" align="center"> + <template #default="scope"> + <el-tag size="small" :type="scope.row.handlerStatus == 2?'danger':(scope.row.handlerStatus == 1 || scope.row.handlerStatus == 3)?'':'success'">{{scope.row.handlerStatus == 1?'待响应':scope.row.handlerStatus == 2?'标记误报':scope.row.handlerStatus == 3?'自查处理中':scope.row.handlerStatus == 4?'已移交上报':scope.row.handlerStatus == 5?'待验收':'已完成'}}</el-tag> + </template> + </el-table-column> + <el-table-column prop="handlerDesc" label="处置描述反馈" align="center"/> + <el-table-column label="操作" align="center" width="180" fixed="right"> + <template #default="scope"> + <el-button v-if="scope.row.handlerStatus == 5" type="text" size="small" class="checkBtn" @click="acceptance(scope.row)">验收</el-button> + <el-button v-if="scope.row.handlerStatus !==1 && scope.row.handlerStatus !==2" type="text" size="small" class="reviewBtn" @click="openPhoto(scope.row)">查看现场照片</el-button> + <el-button v-if="scope.row.handlerStatus ==1" type="text" size="small" @click="remark(scope.row)">标记误报</el-button> + <span v-if="scope.row.handlerStatus == 2" style="color: red">标记误报</span> + </template> + </el-table-column> + </el-table> +<!-- <div class="pageBtn">--> +<!-- <el-pagination v-model:currentPage="pageIndex" v-model:page-size="pageSize" :page-sizes="[10, 15]" small="false" background layout="total, sizes, prev, pager, next, jumper" :total="totalSize" @size-change="handleSizeChange" @current-change="handleCurrentChange" />--> +<!-- </div>--> + </div> + </div> + </div> </div> + <el-dialog + v-model="dialogVisible" + :title= '"工单编号:" + workNum' + width="60%" + :before-close="handleClose" + center + > + <div style="margin-bottom: 20px"> + <div style="margin-bottom: 10px">处置前:</div> + <div v-if="beImgs && beImgs.length>0"> + <el-image v-for="(item,index) in beImgs" :key="index" style="width: 200px; height: 200px;margin-right: 10px" :src="item" fit="fill" /> + </div> + <div v-else> + 无照片信息 + </div> + </div> + <div> + <div style="margin-bottom: 10px">处置后</div> + <div v-if="afImgs && beImgs.length>0"> + <el-image v-for="(item,index) in afImgs" :key="index" style="width: 200px; height: 200px;margin-right: 10px" :src="item" fit="fill" /> + </div> + <div v-else> + 无照片信息 + </div> + </div> + <template #footer> + <span class="dialog-footer"> + <el-button type="primary" @click="dialogVisible = false"> + 确认 + </el-button> + </span> + </template> + </el-dialog> <inspect-record-dialog ref="inspectRecordDialogRef" @refreshInspectRecord="getInspectRecord"></inspect-record-dialog> + <inspect-list ref="inspectListRef"></inspect-list> + <unusual-list ref="unusualListRef" @refreshRecord="getListExcepOrder"></unusual-list> </div> </template> @@ -49,18 +201,24 @@ import { Session } from '/@/utils/storage'; import { Edit, View, Plus, Delete, Refresh, Search, Download } from '@element-plus/icons-vue'; import { ElTable } from 'element-plus'; -import { FormInstance, FormRules, ElMessage } from 'element-plus'; +import { FormInstance, FormRules, ElMessage, ElMessageBox } from 'element-plus'; import { inspectRecordApi } from '/@/api/intellectInspectSystem/inspectRecord'; +import { inspectIndexApi } from '/@/api/intellectInspectSystem/inspectIndex' import { useRouter } from 'vue-router'; +import * as echarts from 'echarts' import inspectRecordDialog from './components/inspectRecordDialog.vue'; -import {departmentApi} from "/@/api/systemManage/department"; +import inspectList from './components/inspectList.vue'; +import unusualList from './components/unusualList.vue'; +import { departmentApi } from '/@/api/systemManage/department'; +import screenfull from "screenfull"; // 定义接口来定义对象的类型 interface stateType { tableData: Array<string>; - unchecked: null | number, - unusual: null | number, - uncheckedList: [], - abnormalList: [], + unusualData: Array<any>; + unchecked: null | number; + unusual: null | number; + uncheckedList: []; + abnormalList: []; pageIndex: number; pageSize: number; totalSize: number; @@ -70,6 +228,14 @@ classGroupList: Array<classGroup>; quotaList: []; inspectPointAllList: []; + chartStatus:boolean; + period: string; + isFull:boolean; + themeColor:string; + dialogVisible:boolean; + workNum: string; + beImgs: []; + afImgs: [] } interface type { id: number; @@ -80,17 +246,27 @@ groupName: string; } export default { - name: 'workingHours', - components: { inspectRecordDialog }, + name: 'inspectIndex', + components: { inspectRecordDialog, inspectList, unusualList }, setup() { const router = useRouter(); + const xjLine = ref("eChartXjLine" + Date.now() + Math.random()) + const sbtj = ref("eChartSbtj" + Date.now() + Math.random()) const state = reactive<stateType>({ + isFull: false, + themeColor: '#333', + workNum: '', + beImgs: [], + afImgs: [], pageIndex: 1, - pageSize: 10, + pageSize: 5, totalSize: 0, tableData: [], + unusualData: [], unchecked: null, unusual: null, + chartStatus: true, + period: 'month', uncheckedList: [], abnormalList: [], workTypeList: [ @@ -107,9 +283,12 @@ ], classGroupList: [], quotaList: [], - inspectPointAllList: [] + inspectPointAllList: [], + dialogVisible: false }); const inspectRecordDialogRef = ref(); + const inspectListRef = ref(); + const unusualListRef = ref(); interface User { name: string; startTime: string; @@ -120,23 +299,316 @@ // 页面载入时执行方法 onMounted(() => { getInspectRecord(); + getListExcepOrder(); getDayData(); - getDepartmentData() + getDepartmentData(); + initXjLine() + initSbtj() }); + const toFullscreen =()=>{ + // console.log(state.isFull,'quanp',state.themeColor) + const element = document.getElementById('bigScreen') + if (!screenfull.isEnabled) { + ElMessage.warning('暂不不支持全屏'); + return false; + } + screenfull.toggle(element); + state.isFull = !state.isFull + if(state.isFull == true){ + state.themeColor = '#11FEEE' + }else{ + state.themeColor = '#333' + } + initXjLine() + initSbtj() + } + const checkAllRecord =()=>{ + inspectListRef.value.departmentList = state.departmentList + inspectListRef.value.showInspectList() + } + const checkAllList =()=>{ + unusualListRef.value.showUnusualList() + } + const acceptance =(row:object)=>{ + ElMessageBox.confirm( + '确认完成验收并结束工单?', + '完成验收', + { + confirmButtonText: '确认', + cancelButtonText: '取消', + type: 'warning', + center: true + } + ) + .then(async() => { + const res = await inspectIndexApi().acceptedStatus({id: row.id}); + if (res.data.code === '200') { + getListExcepOrder(); + ElMessage({ + type: 'success', + message: '验收成功', + }) + } else { + ElMessage({ + type: 'warning', + message: '验收失败' + }); + } + }) + .catch(() => { + ElMessage({ + type: 'info', + message: '取消验收', + }) + }) + } + const remark =(row:object)=>{ + ElMessageBox.confirm( + '确认是否标记误报?', + '标记误报', + { + confirmButtonText: '确认', + cancelButtonText: '取消', + type: 'warning', + center: true + } + ) + .then(async() => { + const res = await inspectIndexApi().falseAlarmStatus({id: row.id}); + if (res.data.code === '200') { + getListExcepOrder(); + ElMessage({ + type: 'success', + message: '标记误报成功', + }) + } else { + ElMessage({ + type: 'warning', + message: '标记误报失败' + }); + } + }) + .catch(() => { + ElMessage({ + type: 'info', + message: '取消标记', + }) + }) + } + const openPhoto = async(row)=>{ + state.dialogVisible = true + state.workNum = row.workOrderNum + const res = await inspectIndexApi().getListImages({id: row.id}); + if (res.data.code === '200') { + state.beImgs = res.data.data.beforeImages + state.afImgs = res.data.data.afterImages + } else { + ElMessage({ + type: 'warning', + message: '图片获取失败' + }); + } + } + type EChartsOption = echarts.EChartsOption + const initXjLine =()=>{ + let dom = document.getElementById(xjLine.value); + let myChart = echarts.init(dom); - // 分页获取工作时段列表 + let option: EChartsOption; + + option = { + tooltip: { + trigger: 'axis' + }, + legend: { + data: ['总趋势', '事业部'], + height: '15%', + top: 0, + bottom: 0, + padding:[1,1,1,0], + textStyle: { + // 设置默认的文字颜色 + color: state.themeColor + }, + }, + grid: { + top: '15%', + left: '3%', + right: '3%', + bottom: 0, + containLabel: true + }, + toolbox: { + feature: { + // saveAsImage: {} + } + }, + xAxis: { + type: 'category', + boundaryGap: false, + data: ['四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月', '一月', '二月', '三月'], + axisLabel: { + color: state.themeColor + } + }, + yAxis: { + splitLine: { + show: true, + lineStyle: { + color: '#fafafa', + width: 1, + type: 'dashed' + } + }, + axisLabel:{ + color: '#ccc' + } + }, + series: [ + { + name: '总趋势', + type: 'line', + stack: 'Total', + data: [120, 132, 101, 134, 90, 120, 132, 101, 134, 90, 230, 210], + label:{ + show: true, + color: '#95d475', + fontSize: 12 + }, + lineStyle:{ + width: 1, + color: '#95d475' + }, + itemStyle:{ + color: '#95d475', + borderColor: '#fff', + borderWidth: 2 + } + }, + { + name: '事业部', + type: 'line', + stack: 'Total', + data: [220, 182, 191, 234, 290, 220, 182, 191, 234, 290, 330, 310], + label:{ + show: true, + color: '#337ecc', + fontSize: 12 + }, + lineStyle:{ + width: 1, + color: '#337ecc' + }, + itemStyle:{ + color: '#337ecc', + borderColor: '#fff', + borderWidth: 2 + } + } + ] + } + + option && myChart.setOption(option); + window.addEventListener("resize",function (){ + myChart.resize(); + }); + } + const initSbtj =()=>{ + let dom = document.getElementById(sbtj.value); + let myChart = echarts.init(dom); + let option: EChartsOption; + option = { + tooltip: { + trigger: 'item' + }, + legend: { + orient: 'vertical', + left: 'left', + top: 'center', + textStyle: { + // 设置默认的文字颜色 + color: state.themeColor, + // fontSize: 12 + }, + itemStyle: { + borderWidth: 0 // 设置图例边框宽度为0 + } + }, + series: [ + { + name: 'Access From', + type: 'pie', + radius: ['40%', '70%'], + avoidLabelOverlap: false, + itemStyle: { + borderRadius: 1, + borderColor: '#fff', + borderWidth: 1 + }, + label: { + show: true, + position: 'outside', + overflow: 'truncate', + borderWidth: 0, + color: state.themeColor + }, + labelLine: { + show: true, // 显示指示线 + lineStyle: { + color: '#ccc', + width: 1, + type: 'solid' + } + }, + emphasis: { + itemStyle: { + shadowBlur: 10, + shadowOffsetX: 0, + shadowColor: 'rgba(0, 0, 0, 0.5)' + }, + }, + data: [ + { value: 1048, name: '区域1' }, + { value: 735, name: '区域2' }, + { value: 580, name: '区域3' }, + { value: 484, name: '区域4' }, + { value: 735, name: '区域5' } + ] + } + ] + } + + option && myChart.setOption(option); + window.addEventListener("resize",function (){ + myChart.resize(); + }); + } + // 分页获取 const getInspectRecord = async () => { - const data = { pageSize: state.pageSize, pageIndex: state.pageIndex}; + const data = { pageSize: state.pageSize, pageIndex: state.pageIndex }; let res = await inspectRecordApi().getInspectRecordByIndex(data); - if (res.data.code === '200'){ - state.tableData = res.data.data.records - state.totalSize = res.data.data.total + if (res.data.code === '200') { + state.tableData = res.data.data.records; + state.totalSize = res.data.data.total; } else { ElMessage({ type: 'warning', message: res.data.msg }); } + }; + // 分页获取 + const getListExcepOrder = async () => { + const data = { pageSize: 4, pageIndex: state.pageIndex }; + let res = await inspectIndexApi().getListExcepOrderByPage(data); + if (res.data.code === '200') { + state.unusualData = JSON.parse(JSON.stringify(res.data.data.records)) + } else { + ElMessage({ + type: 'warning', + message: res.data.msg + }); + } }; //获取部门 const getDepartmentData = async () => { @@ -155,11 +627,8 @@ const getDayData = async () => { let res = await inspectRecordApi().getDayRecord(); if (res.data.code === '200') { - state.unchecked = res.data.data.noCheckTaskCount - state.unusual = res.data.data.abnormalTaskCount - state.uncheckedList = res.data.data.noCheckTasks - console.log(state.uncheckedList,'555555555555555') - state.abnormalList = JSON.parse(JSON.stringify(res.data.data.abnormalTasks)) + state.unchecked = res.data.data.noCheckTaskCount; + state.unusual = res.data.data.abnormalTaskCount; } else { ElMessage({ type: 'warning', @@ -177,49 +646,48 @@ getInspectRecord(); }; - const toLine = (item) =>{ - let id = JSON.parse(JSON.stringify(item)).id + const toLine = (item) => { + console.log(item,'item') + let id = item.id; + console.log(id,'id') router.push({ path: 'intelligentLine', query: { id: id } }); - } + }; - const toOverTime = (id) =>{ - console.log(state.uncheckedList,'list') + const toOverTime = (id) => { + console.log(state.uncheckedList, 'list'); router.push({ path: 'inspectRecord', query: { id: id, - dataList: state.uncheckedList, - total: state.uncheckedList.length } }); - } - - // const toUnusual = (status) =>{ - // router.push({ - // path: 'inspectRecord', - // query: { - // status: status, - // dataList: state.abnormalList, - // total: state.abnormalList.length - // } - // }); - // } + }; const toDetails = (type: string, item) => { inspectRecordDialogRef.value.showInspectRecordDialog(type, item, state.workTypeList, state.departmentList, state.timeType, state.classGroupList, state.quotaList, state.inspectPointAllList); - } + }; return { View, Edit, Delete, Refresh, + xjLine, + sbtj, Plus, router, inspectRecordDialogRef, + inspectListRef, + unusualListRef, + toFullscreen, + checkAllRecord, + checkAllList, + acceptance, + remark, + openPhoto, toLine, toOverTime, toDetails, @@ -234,257 +702,240 @@ <style scoped lang="scss"> $homeNavLengh: 8; @media screen and (min-width: 1366px) { - .topCard{ - display: flex; - align-items: center; - justify-content: space-between; - font-weight: bolder; - .top-info{ - display: flex; - font-size: 16px; - align-items: center; - padding: 10px 15px; - background: #FFD057; - border-radius: 8px; - border: 1px solid #F3001E; - - &>div{ - vertical-align: middle; - white-space: nowrap; - span{ - font-size: 22px; - color: #F3001E; - margin: 0 4px; - cursor: pointer; - } - } - } - } - .left-info { - width: 70%; - display: flex; - align-items: center; - justify-content: left; - font-size: 18px; - color: #333; - overflow-x: auto; - &>span{ - white-space: nowrap; - } - p{ - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - &>span{ - white-space: nowrap; - } - } - } - .mid-info { - width: 20%; - font-size: 18px; - color: #333; - } - .right-info { - width: 10%; - display: flex; - justify-content: right; - align-items: center; - font-size: 16px; - color: #fff; - - div{ - white-space: nowrap; - } - } } @media screen and (min-width: 1200px) and (max-width: 1366px) { - .left-info { - width: 70%; - display: flex; - align-items: center; - justify-content: left; - font-size: 15px; - color: #333; - overflow-x: auto; - &>span{ - white-space: nowrap; - } - p{ - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - &>span{ - white-space: nowrap; - } - } - } - .mid-info { - width: 20%; - font-size: 15px; - color: #333; - } - .right-info { - width: 10%; - display: flex; - justify-content: right; - align-items: center; - font-size: 13px; - color: #fff; - div{ - white-space: nowrap; - } - } + } @media screen and (max-width: 1200px) { - .left-info { - width: 70%; - display: flex; - align-items: center; - justify-content: left; - font-size: 12px; - color: #333; - overflow-x: auto; - &>span{ - white-space: nowrap; - } - p{ - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - &>span{ - white-space: nowrap; - } - } - } - .mid-info { - width: 20%; - font-size: 12px; - color: #333; - } - .right-info { - width: 10%; - display: flex; - justify-content: right; - align-items: center; - font-size: 12px; - color: #fff; - div{ - white-space: nowrap; - } - } + } .home-container { height: calc(100vh - 144px); box-sizing: border-box; overflow: hidden; - .homeCard { - width: 100%; - padding: 20px; - box-sizing: border-box; - background: #fff; - border-radius: 4px; + .full{ + position:fixed; + height: 34px; + line-height: 34px; + top: 80px; + right: 20px; + z-index: 9; + } + .topChart{ + width: 100%; + height: calc((100% - 40px) / 3); + display: flex; + justify-content: space-between; + align-items: flex-start; + margin-bottom: 20px; + &:last-of-type{ + margin-bottom: 0; + } - .title{ + .chart-item{ + width: calc(60% - 20px); + height: 100%; + margin-right: 20px; + position: relative; + background: #fff; + padding: 20px; + + &:last-of-type{ + width: 40%; + margin-right: 0; + } + + .chart-tit{ + width: 100%; + display: flex; + align-items: flex-start; + justify-content: space-between; + .tit{ + font-size: 1.33rem; + font-weight: bolder; + } + .filter-part{ + display: flex; + align-items: center; + justify-content: right; + width: 20%; + .el-switch{ + width: 100% !important; + :deep(.el-switch__core){ + width: 100% !important; + } + } + } + } + .chart{ + width: 100%; + height: 88%; + } + .el-radio-group{ + width: 20%; + display: flex; + flex-flow: column nowrap; + align-items: flex-start; + position: absolute; + right: 10px; + top: 50%; + transform: translateY(-30%); + + .el-radio{ + width: 100%; + margin-bottom: 4px; + } + } + :deep(.active-ring-info){ + .active-ring-name{ + font-size: 1.5rem !important; + text-align: center; + } + } + } + } + .midChart{ + height: calc((100% - 40px) / 3); + width: 100%; + background: #fff; + display: flex; + justify-content: space-between; + align-items: flex-start; + margin-bottom: 20px; + padding: 20px; + + .chart-item{ + width: 100%; + height: 100%; + padding: 0 0 20px; + + .chart-tit{ + width: 100%; + height: 15%; + display: flex; + align-items: center; + justify-content: space-between; + .tit{ font-size: 20px; font-weight: bolder; - } - .main-card { - width: 100%; - height: 100%; - .cardTop { - display: flex; - align-items: center; - justify-content: space-between; - margin-bottom: 10px; - background: #daf3ff; - padding: 10px 15px; - border-radius: 8px; + } + :deep(.el-switch__core){ + width: 120px; - .left-info{ + } + .top-info { + display: flex; + font-size: 14px; + align-items: center; + background: #ffeb87; + padding: 4px 10px; + margin-left: 20px; + border-radius: 2px; + border: 1px solid #ffae00; + & > div { + vertical-align: middle; + white-space: nowrap; + height: 100%; + span { + color: #f3001e; + margin: 0 4px; + font-size: 18px; + cursor: pointer; + font-weight: bolder; - .num{ - font-weight: bolder; - margin-right: 10px; - } - .place{ - font-weight: bolder; - } - .time{ - font-weight: bolder; - margin-right: 5px; - } - .name{ - font-weight: bolder; - margin: 0 5px; - font-weight: bolder; - } + &:hover{ + text-decoration: underline; } - .mid-info{ - - span{ - font-weight: bolder; - } - - .grey{ - color: #999; - } - .green{ - color: #44b100; - } - .blue{ - color: #409eff; - } - .red{ - color: red; - } - } - .right-info{ - - - .checkBtn{ - padding: 10px 15px; - background: #409eff; - border-radius: 4px; - cursor: pointer; - } - - .reviewBtn{ - margin: 10px 15px; - cursor: pointer; - color: #44b100; - } - } + } } - .list{ - height: calc(100% - 60px); - overflow-y: auto; + } + .checkAll{ + cursor: pointer; + &:hover{ + color: #409eff } - .pageBtn { - position: absolute; - bottom: 15px; - right: 20px; - height: 60px; - display: flex; - align-items: center; - justify-content: right; + } + } + .chart{ + width: 100%; + height: 85%; + margin-top: 10px; - .demo-pagination-block + .demo-pagination-block { - margin-top: 10px; + .el-table{ + height: 100% !important; + :deep(.el-table__inner-wrapper){ + height: 100% !important; + .el-table__header-wrapper { + height: 20% !important; + .el-table__header{ + height: 100% !important; + th{ + height: 100% !important; + padding: 0 0 !important; + .cell{ + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + } + } } - .demo-pagination-block .demonstration { - margin-bottom: 16px; + } + .el-table__body-wrapper { + height: 80% !important; + .el-scrollbar__view{ + height: 100% !important; + .el-table__body{ + height: 100% !important; + tbody{ + height: 100% !important; + .el-table__row{ + height: 25% !important; + td{ + height: 25% !important; + padding: 0 0 !important; + .left-info{ + display: flex; + align-items: center; + } + .cell{ + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + } + .el-button{ + padding: 0 !important; + } + } + } + } + } } + } } + } + + .pageBtn { + position: absolute; + bottom: 15px; + right: 20px; + height: 60px; + display: flex; + align-items: center; + justify-content: right; + + .demo-pagination-block + .demo-pagination-block { + margin-top: 10px; + } + .demo-pagination-block .demonstration { + margin-bottom: 16px; + } + } } - &:last-of-type { - position: relative; - padding-top: 0; - height: calc(100% - 60px); - } + } } + .el-row { display: flex; align-items: center; @@ -498,6 +949,198 @@ } } } +.container{ + padding: 20px; + background: url('../../../assets/spwbg.png') no-repeat center; + + .full{ + position:fixed; + background: rgba(0,0,0,.2); + border: 1px solid rgba(54, 252, 252, .6); + border-radius: 17px 1px 1px 17px; + box-shadow: 3px 3px 12px rgba(0,0,0,.2); + height: 32px; + line-height: 30px; + top: 10px; + right: 2px; + display: flex; + justify-content: center; + backdrop-filter: blur(2px); + z-index: 99999; + } + .topChart{ + .chart-item{ + border-radius: 4px; + background: rgba(8, 109, 209, 0.2); + border: 1px solid rgba(54, 252, 252, .6); + backdrop-filter: blur(5px); + position: relative; + z-index: 2; + &:last-of-type{ + position: relative; + z-index: 1; + } + .el-radio.is-bordered.is-checked{ + border-color: #11FEEE !important; + :deep(.el-radio__inner){ + border-color: #11FEEE !important; + background: #11FEEE !important; + } + :deep(.el-radio__label){ + color: #11FEEE !important + } + } + .chart-tit{ + .tit{ + color: #11FEEE; + } + ::v-deep(.el-popper){ + background-color: rgba(10,31,92,1); + border: 1px solid rgba(17,254,238,.4); + color: #11FEEE; + .el-cascader-node{ + .in-active-path{ + background: #0049af; + } + &:hover{ + background: #0049af; + } + } + .el-cascader-node__label{ + color: #11FEEE; + } + .el-icon{ + color: #11FEEE; + } + .el-select-dropdown__item{ + color: #11FEEE; + } + .el-select-dropdown__item.hover{ + background: #0049af; + } + } + ::v-deep(.el-popper__arrow){ + &::before{ + background-color: rgba(10,31,92,.6) !important; + border: 1px solid rgba(17,254,238,.4); + } + } + ::v-deep(.el-input__wrapper){ + box-shadow: none; + border: 1px solid rgba(17,254,238,.2); + background: rgba(10,31,92,.6) !important; + height: 1.5rem; + color: #11FEEE; + + input{ + font-size: 0.8rem; + color: #11FEEE; + } + .el-icon{ + color: #11FEEE; + } + } + } + .chart{ + .el-table { + color: #11FEEE !important; + background-color: rgba(0,0,0,0) !important; + :deep(thead){ + color: #11FEEE !important; + } + :deep(tr){ + background-color: rgba(0,0,0,0) !important; + .el-table__cell{ + background-color: rgba(0,0,0,0) !important; + } + } + } + } + } + } + .midChart{ + border-radius: 4px; + background: rgba(8, 109, 209, 0.2); + border: 1px solid rgba(54, 252, 252, .6); + backdrop-filter: blur(5px); + position: relative; + z-index: 3; + .tit{ + color: #11FEEE; + } + .checkAll{ + cursor: pointer; + color: #11feee; + &:hover{ + color: #409eff + } + } + .el-table { + color: #11FEEE !important; + background-color: rgba(0,0,0,0) !important; + :deep(thead){ + color: #11FEEE !important; + background-color: #092846 !important + } + :deep(tr){ + background-color: rgba(0,0,0,0) !important; + .el-table__cell{ + background-color: rgba(0,0,0,0) !important; + } + .el-table-fixed-column--right{ + background-color: #092846 !important + } + } + } + + ::v-deep(.el-popper){ + background-color: rgba(10,31,92,1); + border: 1px solid rgba(17,254,238,.4); + color: #11FEEE; + .el-cascader-node{ + .in-active-path{ + background: #0049af; + } + &:hover{ + background: #0049af; + } + } + .el-cascader-node__label{ + color: #11FEEE; + } + .el-icon{ + color: #11FEEE; + } + .el-select-dropdown__item{ + color: #11FEEE; + } + .el-select-dropdown__item.hover{ + background: #0049af; + } + } + ::v-deep(.el-popper__arrow){ + &::before{ + background-color: rgba(10,31,92,.6) !important; + border: 1px solid rgba(17,254,238,.4); + } + } + ::v-deep(.el-input__wrapper){ + box-shadow: none; + border: 1px solid rgba(17,254,238,.2); + background: rgba(10,31,92,.6) !important; + height: 1.5rem; + color: #11FEEE; + + input{ + font-size: 0.8rem; + color: #11FEEE; + } + .el-icon{ + color: #11FEEE; + } + } + } +} .el-input { width: 100% !important; } -- Gitblit v1.9.2