From 1d79d3950a3d8c489ca9ee2c88a50b01e2b5ab6e Mon Sep 17 00:00:00 2001 From: zhuzhuanzhuan Date: 星期四, 09 五月 2024 14:54:32 +0800 Subject: [PATCH] 新增首页看板点击图表出现的弹窗组件 --- src/views/mdc/base/modules/efficiencyReport/EfficiencyList.vue | 281 ++++++++++++++++++++++--------------------------------- 1 files changed, 114 insertions(+), 167 deletions(-) diff --git a/src/views/mdc/base/modules/efficiencyReport/EfficiencyList.vue b/src/views/mdc/base/modules/efficiencyReport/EfficiencyList.vue index bd07f4b..dc29ab6 100644 --- a/src/views/mdc/base/modules/efficiencyReport/EfficiencyList.vue +++ b/src/views/mdc/base/modules/efficiencyReport/EfficiencyList.vue @@ -16,54 +16,69 @@ </a-select> </a-form-item> </a-col> + <a-col :md="4" :sm="4"> + <a-form-item label="椹卞姩绫诲瀷"> + <a-auto-complete + v-model="queryParam.driveType" + :data-source="driveTypeList" + placeholder="璇烽�夋嫨椹卞姩绫诲瀷" + :filter-option="filterOption" + :allowClear="true" + /> + </a-form-item> + </a-col> <a-col :md="6" :sm="6"> <a-form-item label="鏃堕棿"> <a-range-picker @change="dateParamChange" :disabledDate="disabledDate" format="YYYYMMDD" - v-model="dates"/> + v-model="dates" :allowClear="false"/> </a-form-item> </a-col> - <a-col :md="14" :sm="14" style="display: flex;align-items: flex-start;-webkit-align-items: flex-start;justify-content: space-between;"> - <a-space> - <a-button type="primary" @click="searchQuery" icon="search">鏌ヨ</a-button> - <a-button type="primary" @click="searchReset" icon="reload">閲嶇疆</a-button> - <a-button type="primary" @click="exportExcel" icon="download">瀵煎嚭</a-button> - </a-space> - <table cellpadding="5" cellspacing="1" style="border: 1px solid darkgray;margin-left: 24px"> + <a-col :md="4" :sm="4" :xs="4"> + <a-form-item label="璁惧绾у埆"> + <j-dict-select-tag placeholder="璇烽�夋嫨璁惧绾у埆" dictCode="device_level" v-model="queryParam.deviceLevel" + allow-clear/> + </a-form-item> + </a-col> + <a-col :md="4" :sm="4" :xs="4"> + <a-form-item label="璁惧绉嶇被"> + <j-dict-select-tag placeholder="璇烽�夋嫨璁惧绉嶇被" dictCode="device_category" + v-model="queryParam.deviceCategory" + allow-clear/> + </a-form-item> + </a-col> + </a-row> + + <a-row :gutter="24" type="flex" align="middle"> + <a-col :md="24" :sm="24" :xs="24" + style="display: flex;justify-content: space-between;align-items: flex-start"> + <div> + <a-space style="margin-right: 20px"> + <a-button type="primary" @click="searchQuery" icon="search">鏌ヨ</a-button> + <a-button type="primary" @click="searchReset" icon="reload">閲嶇疆</a-button> + <a-button type="primary" @click="exportExcel" icon="download">瀵煎嚭</a-button> + <a-button type="primary" icon="printer" v-print="'#Efficiency'" + v-has="'efficiency:print'">鎵撳嵃 + </a-button> + </a-space> + <a-checkbox-group :value="checkedList" :default-value="['lyl']" :options="efficiencyOptions" + @change="efficiencyOptionsOnChange"/> + </div> + <table cellpadding="5" cellspacing="1" style="border: 1px solid darkgray;"> <tr> - <td v-for="(item, index) in identifying">{{item.title}}</td> + <td v-for="(item, index) in identifying" + style="overflow: hidden;text-overflow: ellipsis;white-space: nowrap">{{item.title}} + </td> </tr> <tr> <td style="text-align:center;" v-for="(item, index) in identifying"> <div class="identifyingclass" :style="{background: item.color}"></div> </td> - <!--<td style="text-align:center;"><div style="width: 55px;height: 15px;background-color: #e8ff37;display:inline-block"></div></td>--> - <!--<td style="text-align:center;"><div style="width: 55px;height: 15px;background-color: #99ff4e;display:inline-block"></div></td>--> </tr> </table> </a-col> </a-row> - <a-row :gutter="24"> - <a-col :md="15" :sm="15"> - <a-checkbox-group :value="checkedList" :default-value="['lyl']" :options="efficiencyOptions" - @change="efficiencyOptionsOnChange"/> - </a-col> - </a-row> </a-form> </div> - <!--<div style="width: 530px;position: absolute;top: 0; right: 1.5%;">--> - <!--<table cellpadding="5" cellspacing="1" style="border: 1px solid darkgray;">--> - <!--<tr>--> - <!--<td v-for="(item, index) in identifying">{{item.title}}</td>--> - <!--</tr>--> - <!--<tr>--> - <!--<td style="text-align:center;" v-for="(item, index) in identifying">--> - <!--<div class="identifyingclass" :style="{background: item.color}"></div>--> - <!--</td>--> - <!--<!–<td style="text-align:center;"><div style="width: 55px;height: 15px;background-color: #e8ff37;display:inline-block"></div></td>–>--> - <!--<!–<td style="text-align:center;"><div style="width: 55px;height: 15px;background-color: #99ff4e;display:inline-block"></div></td>–>--> - <!--</tr>--> - <!--</table>--> - <!--</div>--> </div> <a-spin :spinning="spinning"> @@ -73,7 +88,9 @@ v-if="dataList.length>0"> <thead> <tr class="thead fixed equipname"> - <th class="thgu dong1 name" rowspan="2" style="min-width: 50px; max-width: 50px;width: 50px;">鍏徃</th> + <th class="thgu dong1 name" rowspan="2" + style="min-width: 50px; max-width: 50px;width: 50px;height: 66px">鍏徃 + </th> <th class="thgu dong2 name" rowspan="2" style="min-width: 50px; max-width: 50px;width: 50px;">杞﹂棿</th> <th class="thgu dong3 name" rowspan="2" style="min-width: 50px; max-width: 50px;width: 50px;">宸ユ</th> <th class="thgu dong4 name" rowspan="2" style="min-width: 100px; max-width: 100px;width: 100px;">璁惧缂栧彿 @@ -89,7 +106,7 @@ </tr> <tr class="thead notfixed gudingth"> <template v-for="(tableHead, index) in tableHeads"> - <th>鍒╃敤鐜�(%)</th> + <th v-if="checkedList.indexOf('lyl') > -1">鍒╃敤鐜�(%)</th> <th v-if="checkedList.indexOf('kjl') > -1">寮�鏈虹巼(%)</th> <th v-if="checkedList.indexOf('kjsj') > -1">寮�鏈烘椂闂�(灏忔椂)</th> <th v-if="checkedList.indexOf('jgsj') > -1">鍔犲伐鏃堕棿(灏忔椂)</th> @@ -122,7 +139,9 @@ </div> </td> <td class="tdgu3 kaitou">{{item.equipmentId}}</td> - <td class="tdgu4 kaitou" style="min-width: 162px; max-width: 162px;width: 162px;">{{item.equipmentName}}</td> + <td class="tdgu4 kaitou" style="min-width: 162px; max-width: 162px;width: 162px;"> + {{item.equipmentName}} + </td> <td class="tdgu5 kaitou">{{item.equipmentType}}</td> </template> @@ -132,7 +151,9 @@ </template> <template v-for="(tableHead, index) in item.dataList"> - <td :style="{background:tableHead.color }">{{tableHead.utilizationRate | numFilter}}</td> + <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('lyl') > -1"> + {{tableHead.utilizationRate | numFilter}} + </td> <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('kjl') > -1"> {{tableHead.openRate | numFilter}} </td> @@ -168,6 +189,7 @@ import $ from 'jquery' import '@/components/table2excel/table2excel' import { ajaxGetDictItems, getDictItemsFromCache, duplicateCheck } from '@/api/api' + import api from '@/api/mdc' export default { name: 'EfficiencyList', @@ -182,6 +204,7 @@ deviceTypeDict: '', dates: [], selectList: [], + driveTypeList: [], identifying: [], queryParam: {}, queryParams: {}, @@ -222,6 +245,11 @@ this.queryParam.typeTree = '1' this.loadData() this.queryGroup() + this.getDriveTypeByApi() + }, + mounted() { + window.addEventListener('resize', this.handleWindowResize) + this.handleWindowResize() }, watch: { Type(valmath) { @@ -420,41 +448,18 @@ if (!this.queryParam.startTime && !this.queryParam.endTime) this.searchReset() }, efficiencyOptionsOnChange(checkedList) { - let index = checkedList.indexOf('lyl') - if (index < 0) { - // this.$message.warn('涓嶈兘鍙栨秷鏌ヨ寮�鍔ㄧ巼') - this.$notification.warning({ - message: '娑堟伅', - description: '涓嶈兘鍙栨秷鏌ヨ寮�鍔ㄧ巼' - }) - - return false - } + // let index = checkedList.indexOf('lyl') + // if (index < 0) { + // // this.$message.warn('涓嶈兘鍙栨秷鏌ヨ寮�鍔ㄧ巼') + // this.$notification.warning({ + // message: '娑堟伅', + // description: '涓嶈兘鍙栨秷鏌ヨ寮�鍔ㄧ巼' + // }) + // + // return false + // } this.checkedList = checkedList }, - // searchQuery() { - // if(this.queryParam.typeTree == "1"){ - // // this.queryParam.TreeIDTwo = "" - // this.queryParam.parentId = this.queryParamEquip.parentId - // this.queryParam.equipmentId = this.queryParamEquip.equipmentId - // }else{ - // // this.queryParam.TreeIDOne = "" - // this.queryParam.parentId = this.queryParamPeople.parentId - // this.queryParam.equipmentId = "" - // } - // this.loadData() - // // this.onClearSelected() - // }, - // searchReset() { - // this.typeTree = this.queryParam.typeTree - // this.typeParent = this.queryParams.parentId - // this.queryParam = {} - // this.dates = [] - // this.queryParam.typeTree = this.typeTree - // this.queryParam.parentId = this.typeParent - // this.loadData() - // // this.onClearSelected() - // }, searchQuery() { console.log('dates', this.dates) if (this.dates != '') { @@ -479,10 +484,12 @@ this.typeParent = this.queryParam.parentId this.typeEquipment = this.queryParam.equipmentId this.queryParam = {} - this.dates = [] this.queryParam.typeTree = this.typeTree this.queryParam.parentId = this.typeParent this.queryParam.equipmentId = this.typeEquipment + this.dates = [moment().subtract('days', 8), moment().subtract('days', 1)] + this.queryParam.startTime = moment(this.dates[0]).format('YYYYMMDD') + this.queryParam.endTime = moment(this.dates[1]).format('YYYYMMDD') // this.ipagination.current = 1 this.loadData() // this.queryParam = {} @@ -498,6 +505,12 @@ if (res.success) { this.tableHeads = res.result.dates this.dataList = res.result.mdcEfficiencyList + if (res.result.mdcEfficiencyList && !res.result.mdcEfficiencyList.length) { + this.$notification.info({ + message: '娑堟伅', + description: '鏆傛棤璇ヨ澶囩被鍨嬫暟鎹�' + }) + } this.distinguishColorList = res.result.utilizationRateList this.checkSameData(this.dataList) this.checkSameData1(this.dataList) @@ -528,6 +541,37 @@ this.loading = false }) }, + + /** + * 璋冪敤鎺ュ彛鑾峰彇鎺у埗绯荤粺绫诲瀷 + */ + getDriveTypeByApi() { + api.getDriveTypeApi().then((res) => { + this.driveTypeList = res.result.map(item => item.value) + }) + }, + + /** + * 鑱旀兂杈撳叆妗嗙瓫閫夊姛鑳� + * @param input 杈撳叆鐨勫唴瀹� + * @param option 閰嶇疆 + * @returns {boolean} 鍒ゆ柇鏄惁绛涢�� + */ + filterOption(input, option) { + return ( + option.componentOptions.children[0].text.toUpperCase().indexOf(input.toUpperCase()) >= 0 + ) + }, + + /** + * 鍒嗚鲸鐜囨敼鍙樻椂鍚屾椂鏀瑰彉琛ㄦ牸楂樺害宸蹭繚璇侀椤典竴杩涘叆涓嶆嫋鍔ㄥ瀭鐩存粴鍔ㄦ潯鏃跺嵆鍙嫋鍔ㄨ〃鏍兼按骞虫粴鍔ㄦ潯 + */ + handleWindowResize() { + const tableContainer = document.getElementById('Efficiency') // 琛ㄦ牸瀹瑰櫒 + const clientHeight = document.documentElement.clientHeight || document.body.clientHeight // 娴忚鍣ㄥ彲瑙嗗尯鍩熼珮搴� + const containerTopToClientTopHeight = tableContainer.getBoundingClientRect().top // 琛ㄦ牸瀹瑰櫒椤堕儴鍒版祻瑙堝櫒鍙鍖哄煙椤堕儴鐨勯棿璺� + tableContainer.style.height = (clientHeight - containerTopToClientTopHeight - 32) + 'px' + } } } </script> @@ -608,7 +652,6 @@ .table2 thead .equipname .dong1 { z-index: 4; left: 0; - /*border: 1px solid #000;*/ } .table2 thead .equipname .dong2 { @@ -636,50 +679,8 @@ left: 412px; } - @media screen and (min-width: 1920px) { - #Efficiency { - height: 687px !important; - overflow: scroll; - } - } - - @media screen and (min-width: 1680px) and (max-width: 1920px) { - #Efficiency { - height: 687px !important; - overflow: scroll; - } - } - - @media screen and (min-width: 1400px) and (max-width: 1680px) { - #Efficiency { - height: 540px !important; - overflow: scroll; - } - } - - @media screen and (min-width: 1280px) and (max-width: 1400px) { - #Efficiency { - height: 440px !important; - overflow: scroll; - } - } - - @media screen and (max-width: 1280px) { - #Efficiency { - height: 440px !important; - overflow: scroll; - } - } - - #Efficiency .table_guding1 { - position: absolute; + #Efficiency { overflow: hidden; - width: 500px; - } - - #Efficiency .table_guding2 { - overflow-x: scroll; - width: 500px; } .identifyingclass { @@ -704,10 +705,6 @@ text-align: center; } - /*.dataContent .fixed th {*/ - /*width: 50px;*/ - /*}*/ - .dataContent .thead th { background-color: #fafafa; text-align: center; @@ -715,61 +712,11 @@ padding: 5px; } - .dataContent .notfixed th { - /*width: auto;*/ - } - - /*.dataContent tr td {*/ - /*height: 35px;*/ - /*}*/ - .dataContent .mathData td { - padding: 10px; - /*display: none;*/ - } - - .dataContent .mathData .td { - /*background-color: #ff9bd2;*/ - display: inline-block; padding: 10px; } td { vertical-align: middle; } - - .pink { - background-color: #ff9bd2; - } - - .yellow { - background-color: #e8ff37; - } - - .green { - background-color: #99ff4e; - } - - .vertical-text { - writing-mode: vertical-rl; - } - - /*/deep/ .ant-table-body .ant-table-row td {*/ - /*padding-top: 10px;*/ - /*padding-bottom: 10px;*/ - /*}*/ - - /deep/ .ant-table-body .ant-table-row td.data { - min-width: 150px; - max-width: 150px; - } - - /deep/ .ant-table-tbody > tr.ant-table-row:hover > td { - background: none !important; - } - - /deep/ .ant-table-thead th { - text-align: center; - } - </style> \ No newline at end of file -- Gitblit v1.9.3