From 738f76adfcbf102dfbf890b044ba9a25a034cb8c Mon Sep 17 00:00:00 2001 From: zhuzhuanzhuan Date: 星期三, 27 三月 2024 16:17:38 +0800 Subject: [PATCH] 1、用户管理页面修改身份字段名称为首页权限并调整其选项值 2、按照新需求完成客户操作工进入后页面所有布局100% 3、调整全局页脚内容 --- src/views/mdc/base/modules/openRateTrendAnalysis/openRateTrendAnalysisMain.vue | 405 +++++++++++++++++++++++++++++++-------------------------- 1 files changed, 221 insertions(+), 184 deletions(-) diff --git a/src/views/mdc/base/modules/openRateTrendAnalysis/openRateTrendAnalysisMain.vue b/src/views/mdc/base/modules/openRateTrendAnalysis/openRateTrendAnalysisMain.vue index a8c7da6..8b4bcfd 100644 --- a/src/views/mdc/base/modules/openRateTrendAnalysis/openRateTrendAnalysisMain.vue +++ b/src/views/mdc/base/modules/openRateTrendAnalysis/openRateTrendAnalysisMain.vue @@ -1,31 +1,42 @@ <template> <div class="efficiency_list" style="width: 100%;height: 100%;"> - <a-card :bordered="false"> + <div :bordered="false" style="height: 100%"> <!-- 鏌ヨ鍖哄煙 --> - <div class="table-page-search-wrapper"> - <a-form layout="inline" @keyup.enter.native="searchQuery"> - <a-row :gutter="24"> - <a-col :md="6" :sm="6"> - <a-form-item label="鏃堕棿"> - <a-range-picker @change="dateParamChange" :disabledDate="disabledDate" format="YYYYMMDD" v-model="dates"/> - </a-form-item> - </a-col> - <a-col :lg="2" :md="3" :sm="3" :xs="3"> - <a-button type="primary" @click="searchQuery" icon="search">鏌ヨ</a-button> - </a-col> - </a-row> - </a-form> - </div> - <div id="DeviceList"> - <div class="openRateTrendDg"> - <div id="Efficiency" class="container" style="margin-top: 20px;"> + <div class="table-page-search-wrapper"> + <a-form layout="inline" @keyup.enter.native="searchQuery"> + <a-row :gutter="24"> + <a-col :md="7" :sm="7"> + <a-form-item label="鏃堕棿"> + <a-range-picker @change="dateParamChange" :disabledDate="disabledDate" format="YYYYMMDD" + v-model="dates" :allowClear="false"/> + </a-form-item> + </a-col> + <a-col :lg="2" :md="3" :sm="3" :xs="3"> + <a-button type="primary" @click="searchQuery" icon="search">鏌ヨ</a-button> + </a-col> + </a-row> + </a-form> + </div> + + <!--琛ㄦ牸鍙婂浘琛ㄥ尯鍩�--> + <div id="DeviceList"> + <!--琛ㄦ牸鍖哄煙--> + <a-spin :spinning="loading"> + <div id="Efficiency" class="container" style="margin-bottom: 15px;"> <div class="table2"> - <table class="dataContent table" border="1" cellspacing="0" cellpadding="0" style="white-space: nowrap;text-align: center;"> + <table class="dataContent table" border="1" cellspacing="0" cellpadding="0" + style="white-space: nowrap;text-align: center;"> <thead> <tr class="thead fixed equipname"> - <th class="thgu dong1 name" rowspan="2" style="min-width: 150px; max-width: 150px;width: 150px;">璁惧缂栧彿</th> - <th class="thgu dong2 name" rowspan="2" style="min-width: 150px; max-width: 150px;width: 150px;">璁惧鍚嶇О</th> - <th class="thgu dong3 name" rowspan="2" style="min-width: 100px; max-width: 100px;width: 100px;">璁惧绫诲瀷</th> + <th class="thgu dong1 name" rowspan="2" style="min-width: 150px; max-width: 150px;width: 150px;"> + 璁惧缂栧彿 + </th> + <th class="thgu dong2 name" rowspan="2" style="min-width: 162px; max-width: 162px;width: 162px;"> + 璁惧鍚嶇О + </th> + <th class="thgu dong3 name" rowspan="2" style="min-width: 100px; max-width: 100px;width: 100px;"> + 璁惧绫诲瀷 + </th> <template v-for="(tableHead, index) in tableHeads"> <th class="timeth" :colspan="checkedList.length">{{tableHead}}</th> </template> @@ -33,9 +44,9 @@ </thead> <tbody> <tr class="mathData" v-for="(item, index) in dataList" @click="TableDraw(index,item)"> - <td class="tdgu kaitou">{{item.equipmentId}}</td> - <td class="tdgu1 kaitou">{{item.equipmentName}}</td> - <td class="tdgu2 kaitou">{{item.equipmentType}}</td> + <td class="tdgu kaitou">{{item.equipmentId}}</td> + <td class="tdgu1 kaitou">{{item.equipmentName}}</td> + <td class="tdgu2 kaitou">{{item.equipmentType}}</td> <template v-for="(tableHead, index) in item.dataList"> <td :style="{background:tableHead.color }">{{tableHead.utilizationRate | numFilter}}</td> </template> @@ -43,11 +54,12 @@ </tbody> </table> </div> - </div> </div> - <div id="openRateTrendChart" style="width: 100%;height: 60%"></div> - </div> - </a-card> + </a-spin> + <!--鍥炬爣鍖哄煙--> + <div id="openRateTrendChart"></div> + </div> + </div> </div> </template> @@ -60,6 +72,7 @@ import { JeecgListMixin } from '@/mixins/JeecgListMixin' + export default { // mixins: [JeecgListMixin], name: 'openRateTrendAnalysisMain', @@ -69,7 +82,7 @@ dataSource: [], /* table鍔犺浇鐘舵�� */ loading: false, - typeTree: "", + typeTree: '', typeParent: 1, typeEquipment: 1, TreeIDOne: 1, @@ -96,8 +109,11 @@ listByType: '/mdc/MdcUtilizationRate/getByType' }, tableHeads: [], - XData:[0], - YData:[0], + XData: [0], + YData: [0], + isLazyRequest: '',// 鏄惁寮�鍚噿鍔犺浇 + requestAlldataSize: 8,// 鎬诲叡璇锋眰鐨勫垪琛ㄩ」鏁扮洰 + everyRequestDataSize: 15// 姣忔璇锋眰鐨勫垪琛ㄩ」鏁扮洰 } }, props: { nodeTree: '', Type: '', nodePeople: '' }, @@ -108,12 +124,20 @@ this.dates = [moment().subtract('days', 8), moment().subtract('days', 1)] this.queryParam.startDate = moment(this.dates[0]).format('YYYYMMDD') this.queryParam.endDate = moment(this.dates[1]).format('YYYYMMDD') - this.queryParam.typeTree = "1" + this.queryParam.typeTree = '1' this.loadData1() + }, + mounted() { + this.tableScroll = document.querySelector('.table2') + window.addEventListener('resize',this.handleWindowResize) + }, + beforeDestroy() { + this.tableScroll.removeEventListener('scroll', this.tableScrollX) + window.removeEventListener('resize',this.handleWindowResize) }, watch: { Type(valmath) { - this.dataList = []; + this.dataList = [] this.queryParam.typeTree = valmath }, nodeTree(val) { //鐩戝惉currSelected 鍙樺寲锛屽皢鍙樺寲鍚庣殑鏁板�间紶閫掔粰 getCurrSelected 浜嬩欢 @@ -152,33 +176,33 @@ } }, methods: { - numBerTwo(value){ + numBerTwo(value) { if (value) { return parseFloat((value * 100).toFixed(2)) } else { return '0' } }, - TableDraw(key,val) { - this.XData=[0] - this.YData[0] + TableDraw(key, val) { + this.XData = [0] + this.YData[0] var Xarr = [] var Yarr = [] - for (var i = 0; i < val.dataList.length; i++) { - Xarr.push(val.dataList[i].theDate) - Yarr.push(this.numBerTwo(val.dataList[i].utilizationRate)) - } - this.XData=Xarr - this.YData=Yarr - // if(this.openRateTrendAnalysisChart !=null && this.openRateTrendAnalysisChart != '' && this.openRateTrendAnalysisChart != undefined){ - // this.openRateTrendAnalysisChart.dispose() - // } + for (var i = 0; i < val.dataList.length; i++) { + Xarr.push(val.dataList[i].theDate) + Yarr.push(this.numBerTwo(val.dataList[i].utilizationRate)) + } + this.XData = Xarr + this.YData = Yarr + // if(this.openRateTrendAnalysisChart !=null && this.openRateTrendAnalysisChart != '' && this.openRateTrendAnalysisChart != undefined){ + // this.openRateTrendAnalysisChart.dispose() + // } - this.draw() + this.draw() }, disabledDate(current) { //Can not slect days before today and today - return current && current > moment().subtract('days', 1); + return current && current > moment().subtract('days', 1) }, initDeviceType(deviceList) { let dictCode = 'mdc_equipmentType' @@ -210,17 +234,22 @@ dateParamChange(v1, v2) { this.queryParam.startDate = v2[0] this.queryParam.endDate = v2[1] + this.dates = [v1[0], v1[1]] }, searchQuery() { - if (this.queryParam.typeTree == "1") { + // 鍥犺Е搴曞埛鏂颁細淇敼鍙傛暟鏃堕棿鍊硷紝鏁呭湪姝ょ敤鏃堕棿閫夋嫨鍣ㄧ殑鏃堕棿鍊煎鍙傛暟鏃堕棿鍊煎啀娆¤祴鍊硷紝鑻ヤ笉杩欐牱鍋氬垯鍙傛暟鏃堕棿鍊煎垯浼氫笌鏃堕棿閫夋嫨鍣ㄤ笂鐨勬椂闂村�间笉涓�鑷� + this.queryParam.startDate = moment(this.dates[0]).format('YYYYMMDD') + this.queryParam.endDate = moment(this.dates[1]).format('YYYYMMDD') + + if (this.queryParam.typeTree == '1') { this.queryParam.parentId = this.queryParamEquip.parentId this.queryParam.equipmentId = this.queryParamEquip.equipmentId } else { this.queryParam.parentId = this.queryParamPeople.parentId - this.queryParam.equipmentId = "" + this.queryParam.equipmentId = '' } + this.requestAlldataSize = moment.duration(moment(this.queryParam.endDate) - moment(this.queryParam.startDate), 'millisecond').asDays() + 1 this.loadData1() - // this.onClearSelected() }, // searchReset() { // this.typeTree = this.queryParam.typeTree @@ -292,8 +321,16 @@ // } // } loadData1() { + this.loading = true this.tableHeads = [] this.dataList = [] + // 鑻ユ棩鏈熼�夋嫨鍣ㄨ缃殑鏌ヨ璇锋眰鏁伴噺瓒呰繃15鏉″垯寮�鍚噿鍔犺浇 + if (this.requestAlldataSize > 15) { + // 寮�鍚噿鍔犺浇鍚庡皢缁撴潫鏃ユ湡璁剧疆涓哄紑濮嬫棩鏈熶箣鍚庣殑14澶╋紝鍗冲厛鏌ヨ15澶╁唴鐨勬暟鎹� + this.queryParam.endDate = moment(this.queryParam.startDate).add(this.everyRequestDataSize - 1, 'days').format('YYYYMMDD') + this.isLazyRequest = true + this.tableScroll.removeEventListener('scroll', this.tableScrollX) // 涓洪伩鍏嶆粴鍔ㄦ潯鏈夋粴鍔ㄨ窛绂诲悗鍚庣偣鍑绘煡璇㈡寜閽Е鍙戞粴鍔ㄤ簨浠讹紝鍥犳鍦ㄨЕ鍙戜簨浠跺墠绉婚櫎浜嬩欢 + } getAction(this.url.efficiencyList, this.queryParam).then(res => { if (res.success) { this.tableHeads = res.result.dates @@ -304,12 +341,14 @@ // this.checkSameData2(this.dataList) // this.combineCell(); // this.initDeviceType(this.dataList) - + this.tableScroll.addEventListener('scroll', this.tableScrollX) } + }).finally(() => { + this.loading = false }) }, - draw(){ - let openRateTrendAnalysisChart = this.$echarts.init(document.getElementById('openRateTrendChart'), 'macarons'); + draw() { + this.openRateTrendAnalysisChart = this.$echarts.init(document.getElementById('openRateTrendChart'), 'macarons') let openRateTrendChartOptions = { title: { text: '鍒╃敤鐜囪蛋鍔垮垎鏋�', @@ -317,7 +356,7 @@ textStyle: { fontSize: 18, fontWeight: 'bolder', - color: "#151414" + color: '#151414' } }, tooltip: { @@ -348,7 +387,7 @@ series: [ { name: '鍒╃敤鐜�', - type: 'bar', + type: 'line', data: this.YData, markPoint: { data: [ @@ -363,8 +402,50 @@ } } ] - }; - openRateTrendAnalysisChart.setOption(openRateTrendChartOptions,true); + } + this.openRateTrendAnalysisChart.setOption(openRateTrendChartOptions, true) + }, + + /** + * 婊氬姩鏉¤Е搴曞埛鏂拌〃鏍兼暟鎹� + */ + tableScrollX() { + // 褰撴粴鍔ㄦ潯瑙﹀簳涓旀噿鍔犺浇寮�鍚椂瑙﹀彂婊氬姩鏉¤Е搴曞埛鏂� + if (Math.ceil(this.tableScroll.scrollLeft + this.tableScroll.clientWidth) + 1 >= this.tableScroll.scrollWidth && this.isLazyRequest) { + this.loading = true + this.queryParam.startDate = moment(this.queryParam.endDate).add(1, 'days').format('YYYYMMDD') + // 鍒ゆ柇璁剧疆鎳掑姞杞藉悗鐨勭粨鏉熸椂闂存槸鍚﹁秴杩囨椂闂撮�夋嫨鍣ㄤ腑璁剧疆鐨勭粨鏉熸椂闂� + if (moment(this.queryParam.endDate).add(this.everyRequestDataSize - 1, 'days').format('YYYYMMDD') - moment(this.dates[1]).format('YYYYMMDD') < 0) { + //鍐嶆鏌ヨ鍚�15澶╁唴鐨勬暟鎹� + this.queryParam.endDate = moment(this.queryParam.endDate).add(this.everyRequestDataSize, 'days').format('YYYYMMDD') + } else { + // 濡傛灉涓嶅皬浜庢椂闂撮�夋嫨鍣ㄤ腑璁剧疆鐨勬椂闂村垯璁剧疆璇锋眰缁撴潫鏃ユ湡涓烘椂闂撮�夋嫨鍣ㄤ腑璁剧疆鐨勭粨鏉熸椂闂村苟涓斿叧闂噿鍔犺浇锛堟剰鍛崇潃鏈�鍚庝竴娆¤Е搴曞埛鏂帮級 + this.queryParam.endDate = moment(this.dates[1]).format('YYYYMMDD') + this.isLazyRequest = false + } + getAction(this.url.efficiencyList, this.queryParam).then(res => { + if (res.success) { + this.tableHeads = [...this.tableHeads, ...res.result.dates] + this.dataList.forEach(item1 => { + res.result.mdcEfficiencyList.forEach(item2 => { + if (item1.equipmentId === item2.equipmentId) { + item1.dataList = [...item1.dataList, ...item2.dataList] + } + }) + }) + this.draw() + } + }).finally(() => { + this.loading = false + }) + } + }, + + /** + * 褰撴祻瑙堝櫒鍙绐楀彛灏哄鍙戠敓鏀瑰彉鏃惰Е鍙� + */ + handleWindowResize(){ + if(this.openRateTrendAnalysisChart) this.openRateTrendAnalysisChart.resize() } } } @@ -380,15 +461,8 @@ border: 1px solid #ccc; /*border: 1px solid #ccc;*/ width: 100%; - /*height: 100%;*/ - /*overflow: hidden;*/ - /*overflow-y: auto;*/ text-align: center; } - - /*.dataContent .fixed th {*/ - /*width: 50px;*/ - /*}*/ .dataContent .thead th { background-color: #fafafa; @@ -397,160 +471,123 @@ padding: 5px; } - .dataContent .notfixed th { - /*width: auto;*/ - } - .dataContent tr td { height: 35px; } .dataContent .mathData td { padding: 10px; - /*display: none;*/ + cursor: pointer; } - .dataContent .mathData .td { - /*background-color: #ff9bd2;*/ - display: inline-block; - padding: 10px; + .dataContent .mathData:hover td { + background-color: #e6f7ff; } - .dataContent .mathData .tdd { - /*display: none;*/ - } - .table2{ + .table2 { width: 100%; height: 100%; overflow: auto; } - /*tr th {*/ - /*height: 50px!important;*/ - /*}*/ - /*tr td{*/ - /*height: 50px!important;*/ - /*}*/ + .table2 thead tr th:first-child, - .table tbody tr .tdgu{ + .table tbody tr .tdgu { position: sticky; left: 0; z-index: 1; } - .table tbody tr .kaitou{ + + .table tbody tr .kaitou { z-index: 1; background-color: white; } - .table tbody tr .tdgu1{ + + .table tbody tr .tdgu1 { position: sticky; left: 150px; z-index: 2; - } - .table tbody tr .tdgu2{ - position: sticky; - left: 300px; - z-index: 2; - } - .table tbody tr .tdgu3{ - position: sticky; - left: 450px; - z-index: 2; - } - .table tbody tr .tdgu4{ - position: sticky; - left: 550px; - z-index: 2; - } - .table tbody tr .tdgu5{ - position: sticky; - left: 700px; - z-index: 2; - } - .table2 thead tr .timeth, - .table2 thead tr .thgu { - position: sticky; - top:0; - z-index: 3; - } - .table2 thead .gudingth th{ - position: sticky; - top: 32px; - z-index: 6!important; - } - .table2 thead .equipname .name{ - z-index: 3; - } - .table2 thead .equipname .dong1{ - z-index: 4; - left: 0; - /*border: 1px solid #000;*/ - } - .table2 thead .equipname .dong2{ - z-index: 5; - left: 150px; - } - .table2 thead .equipname .dong3{ - z-index: 5; - left: 300px; - } - .table2 thead .equipname .dong4{ - z-index: 5; - left: 450px; - } - .table2 thead .equipname .dong5{ - z-index: 5; - left: 550px; - } - .table2 thead .equipname .dong6{ - z-index: 5; - left: 700px; } - @media screen and (min-width: 1920px){ - #Efficiency{ - height: 337px!important; - overflow: scroll; - } + .table tbody tr .tdgu2 { + position: sticky; + left: 312px; + z-index: 2; } - @media screen and (min-width: 1680px) and (max-width: 1920px){ - #Efficiency{ - height: 337px!important; - overflow: scroll; - } + + .table2 thead tr .timeth, + .table2 thead tr .thgu { + position: sticky; + top: 0; + z-index: 3; } - @media screen and (min-width: 1400px) and (max-width: 1680px){ - #Efficiency{ - height: 190px!important; - overflow: scroll; - } + + .table2 thead .gudingth th { + position: sticky; + top: 32px; + z-index: 6 !important; } - @media screen and (min-width: 1280px) and (max-width: 1400px){ - #Efficiency{ - height: 90px!important; - overflow: scroll; - } + + .table2 thead .equipname .name { + z-index: 3; } - @media screen and (max-width: 1280px){ - #Efficiency{ - height: 90px!important; - overflow: scroll; - } + + .table2 thead .equipname .dong1 { + z-index: 4; + left: 0; } - #Efficiency .table_guding1{ - position: absolute; + + .table2 thead .equipname .dong2 { + z-index: 5; + left: 150px; + } + + .table2 thead .equipname .dong3 { + z-index: 5; + left: 312px; + } + + .efficiency_list #DeviceList { + height: 90% !important; + } + + #Efficiency{ overflow: hidden; - width: 500px; } - #Efficiency .table_guding2{ - overflow-x: scroll; - width: 500px; + + #openRateTrendChart{ + width: 100%; + height: 60%; } - /deep/ .ant-card{ - height: 100%!important; + + @media screen and (min-width: 1920px) { + #Efficiency { + height: 337px !important; + } } - /deep/ .ant-card .ant-card-body{ - height: 100%!important; + + @media screen and (min-width: 1680px) and (max-width: 1920px) { + #Efficiency { + height: 337px !important; + } } - .efficiency_list #DeviceList{ - height: 90%!important; + + @media screen and (min-width: 1400px) and (max-width: 1680px) { + #Efficiency { + height: 337px !important; + } } + + @media screen and (min-width: 1280px) and (max-width: 1400px) { + #Efficiency { + height: 200px !important; + } + } + + @media screen and (max-width: 1280px) { + #Efficiency { + height: 200px !important; + } + } + + </style> \ No newline at end of file -- Gitblit v1.9.3