利用率走势界面的样式调整,利用率分段分析界面绘制,接口调取,渲染,功能的完成,定时任务加日志展示详情的处理
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div class="efficiency_list" style="width: 100%;height: 100%;"> |
| | | <a-card :bordered="false"> |
| | | <!-- æ¥è¯¢åºå --> |
| | | <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 :md="7" :sm="7" :xs="7"> |
| | | <a-form-item label="æ¶é´æ®µ"> |
| | | <a-time-picker :default-value="moment('00:00', 'HH:mm')" format="HH:mm" @change="onChangeStart" /> |
| | | è³ |
| | | <a-time-picker :default-value="moment('08:00', 'HH:mm')" format="HH:mm" @change="onChangeEnd" /> |
| | | </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="table2"> |
| | | <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> |
| | | <template v-for="(tableHead, index) in tableHeads"> |
| | | <th class="timeth">{{tableHead}}</th> |
| | | </template> |
| | | </tr> |
| | | </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> |
| | | <template v-for="(tableHead, index) in item.dataList"> |
| | | <td :style="{background:tableHead.color }">{{tableHead.utilizationRate | numFilter}}</td> |
| | | </template> |
| | | </tr> |
| | | </tbody> |
| | | </table> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div id="openRateTrendChart" style="width: 100%;height: 60%"></div> |
| | | </div> |
| | | </a-card> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import moment from 'moment' |
| | | import { putAction, getAction } from '@/api/manage' |
| | | import $ from 'jquery' |
| | | import '@/components/table2excel/table2excel' |
| | | import { ajaxGetDictItems, getDictItemsFromCache, duplicateCheck } from '@/api/api' |
| | | import { |
| | | JeecgListMixin |
| | | } from '@/mixins/JeecgListMixin' |
| | | export default { |
| | | // mixins: [JeecgListMixin], |
| | | name: 'openRateFractionAnalysisMain', |
| | | components: {}, |
| | | data() { |
| | | return { |
| | | dataSource: [], |
| | | /* tableå è½½ç¶æ */ |
| | | loading: false, |
| | | typeTree: "", |
| | | typeParent: 1, |
| | | typeEquipment: 1, |
| | | TreeIDOne: 1, |
| | | TreeIDTwo: 2, |
| | | deviceTypeDict: '', |
| | | dates: [], |
| | | identifying: [], |
| | | queryParam: {}, |
| | | queryParams: {}, |
| | | queryParamEquip: {}, |
| | | queryParamPeople: {}, |
| | | efficiencyOptions: [ |
| | | { label: 'å©ç¨ç', value: 'lyl' }, |
| | | { label: '弿ºç', value: 'kjl' }, |
| | | { label: '弿ºæ¶é´', value: 'kjsj' }, |
| | | { label: 'å å·¥æ¶é´', value: 'jgsj' }, |
| | | { label: 'å¾
æºæ¶é´', value: 'djsj' }, |
| | | { label: 'å
³æºæ¶é´', value: 'gjsj' } |
| | | ], |
| | | checkedList: ['lyl'], |
| | | dataList: [], |
| | | url: { |
| | | efficiencyList: '/mdc/efficiencyReport/utilizationRateSectionAnalyze', |
| | | listByType: '/mdc/MdcUtilizationRate/getByType' |
| | | }, |
| | | tableHeads: [], |
| | | XData:[0], |
| | | YData:[0], |
| | | } |
| | | }, |
| | | props: { nodeTree: '', Type: '', nodePeople: '' }, |
| | | /** |
| | | * çå½å¨æ æè½½å |
| | | * */ |
| | | created() { |
| | | 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.startTime = '00:00' |
| | | this.queryParam.endTime = "08:00" |
| | | this.queryParam.typeTree = "1" |
| | | this.loadData1() |
| | | }, |
| | | watch: { |
| | | Type(valmath) { |
| | | this.dataList = []; |
| | | this.queryParam.typeTree = valmath |
| | | }, |
| | | nodeTree(val) { //çå¬currSelected ååï¼å°åååçæ°å¼ä¼ éç» getCurrSelected äºä»¶ |
| | | if (JSON.stringify(val) != '{}') { |
| | | if (val.equipmentId != null) { |
| | | this.queryParamEquip.parentId = '' |
| | | this.queryParamEquip.equipmentId = val.equipmentId |
| | | } else { |
| | | this.queryParamEquip.parentId = val.key |
| | | this.queryParamEquip.equipmentId = '' |
| | | } |
| | | /*è¿éä½ æ¯çå¬å°æ å¾åå æ¯ä¸æ¯è¯·æ±ä¸æ¬¡*/ |
| | | this.searchQuery() |
| | | } |
| | | }, |
| | | nodePeople(val) { |
| | | if (JSON.stringify(val) != '{}') { |
| | | if (val.equipmentId != null) { |
| | | this.queryParamPeople.parentId = val.equipmentId |
| | | this.queryParamPeople.equipmentId = '' |
| | | } else { |
| | | this.queryParamPeople.parentId = val.key |
| | | this.queryParamPeople.equipmentId = '' |
| | | } |
| | | this.searchQuery() |
| | | } |
| | | } |
| | | }, |
| | | filters: { |
| | | numFilter(value) { |
| | | if (value) { |
| | | return parseFloat((value * 100).toFixed(2)) |
| | | } else { |
| | | return '0' |
| | | } |
| | | } |
| | | }, |
| | | methods: { |
| | | moment, |
| | | onChangeStart(time, timeString) { |
| | | this.queryParam.startTime = timeString |
| | | // console.log(time, timeString); |
| | | }, |
| | | onChangeEnd(time, timeString) { |
| | | this.queryParam.endTime = timeString |
| | | // console.log(time, timeString); |
| | | }, |
| | | numBerTwo(value){ |
| | | if (value) { |
| | | return parseFloat((value * 100).toFixed(2)) |
| | | } else { |
| | | return '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() |
| | | // } |
| | | |
| | | this.draw() |
| | | }, |
| | | //Can not slect days before today and today |
| | | disabledDate(current) { |
| | | return current && current > moment().subtract('days', 1); |
| | | }, |
| | | dateParamChange(v1, v2) { |
| | | this.queryParam.startDate = v2[0] |
| | | this.queryParam.endDate = v2[1] |
| | | }, |
| | | searchQuery() { |
| | | 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.loadData1() |
| | | // this.onClearSelected() |
| | | }, |
| | | // searchReset() { |
| | | // this.typeTree = this.queryParam.typeTree |
| | | // 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.ipagination.current = 1 |
| | | // this.loadData1(); |
| | | // // this.queryParam = {} |
| | | // // this.dates = [] |
| | | // // this.loadData() |
| | | // // this.onClearSelected() |
| | | // }, |
| | | // loadData1() { |
| | | // let that = this |
| | | // that.columns=[ |
| | | // { |
| | | // title: '设å¤ç¼å·', |
| | | // align: 'center', |
| | | // dataIndex: 'equipmentId', |
| | | // width:'150px' |
| | | // }, |
| | | // { |
| | | // title: '设å¤åç§°', |
| | | // align: 'center', |
| | | // dataIndex: 'equipmentName', |
| | | // width:'150px' |
| | | // }, |
| | | // ] |
| | | // that.tableHeads = [] |
| | | // that.dataList = [] |
| | | // getAction(this.url.efficiencyList, that.queryParam).then(res => { |
| | | // var tmp = {} |
| | | // console.log(res) |
| | | // if (res.success) |
| | | // |
| | | // that.dataSource = res.result.mdcEfficiencyList |
| | | // for(var k = 0;k<that.dataSource[0].dataList.length;k++){ |
| | | // that.columns.push( |
| | | // { |
| | | // title:that.dataSource[0].dataList.theDate, |
| | | // align: 'center', |
| | | // width:'120px', |
| | | // // dataIndex:'utilizationRate', |
| | | // } |
| | | // ) |
| | | // } |
| | | // for(var i = 0;i<that.dataSource.length;i++){ |
| | | // for (var j = 0; j < that.dataSource[i].dataList.length;j++){ |
| | | // // that.columns.push( |
| | | // // { |
| | | // // title:that.dataSource[0].dataList[j].theDate, |
| | | // // align: 'center', |
| | | // // width:'120px', |
| | | // // dataIndex:'utilizationRate', |
| | | // // } |
| | | // // ) |
| | | // } |
| | | // |
| | | // } |
| | | // console.log(that.columns) |
| | | // console.log(that.dataSource) |
| | | // // this.initDeviceType(this.dataList) |
| | | // this.draw() |
| | | // } |
| | | // } |
| | | loadData1() { |
| | | this.tableHeads = [] |
| | | this.dataList = [] |
| | | getAction(this.url.efficiencyList, this.queryParam).then(res => { |
| | | if (res.success) { |
| | | this.tableHeads = res.result.dates |
| | | this.dataList = res.result.mdcEfficiencyList |
| | | this.draw() |
| | | // this.checkSameData(this.dataList) |
| | | // this.checkSameData1(this.dataList) |
| | | // this.checkSameData2(this.dataList) |
| | | // this.combineCell(); |
| | | // this.initDeviceType(this.dataList) |
| | | |
| | | } |
| | | }) |
| | | }, |
| | | draw(){ |
| | | let openRateTrendAnalysisChart = this.$echarts.init(document.getElementById('openRateTrendChart'), 'macarons'); |
| | | let openRateTrendChartOptions = { |
| | | title: { |
| | | text: 'å©ç¨çèµ°å¿åæ', |
| | | x: 'center', |
| | | textStyle: { |
| | | fontSize: 18, |
| | | fontWeight: 'bolder', |
| | | color: "#151414" |
| | | } |
| | | }, |
| | | tooltip: { |
| | | trigger: 'axis' |
| | | }, |
| | | toolbox: { |
| | | show: true, |
| | | feature: { |
| | | mark: { show: true }, |
| | | dataView: { show: true, readOnly: false }, |
| | | magicType: { show: true, type: ['line', 'bar'] }, |
| | | restore: { show: true }, |
| | | saveAsImage: { show: true } |
| | | } |
| | | }, |
| | | calculable: true, |
| | | xAxis: [ |
| | | { |
| | | type: 'category', |
| | | data: this.XData |
| | | } |
| | | ], |
| | | yAxis: [ |
| | | { |
| | | type: 'value' |
| | | } |
| | | ], |
| | | series: [ |
| | | { |
| | | name: 'å©ç¨ç', |
| | | type: 'bar', |
| | | data: this.YData, |
| | | markPoint: { |
| | | data: [ |
| | | { type: 'max', name: 'æå¤§å¼', symbolSize: 70 }, |
| | | { type: 'min', name: 'æå°å¼', symbolSize: 70 } |
| | | ] |
| | | }, |
| | | markLine: { |
| | | data: [ |
| | | { type: 'average', name: 'å¹³åå¼' } |
| | | ] |
| | | } |
| | | } |
| | | ] |
| | | }; |
| | | openRateTrendAnalysisChart.setOption(openRateTrendChartOptions,true); |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | <style scoped> |
| | | .dataContent { |
| | | white-space: nowrap; |
| | | /*margin: 0;*/ |
| | | /*border: none;*/ |
| | | border-collapse: separate; |
| | | border-spacing: 0; |
| | | /*table-layout: fixed;*/ |
| | | 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; |
| | | text-align: center; |
| | | height: 30px; |
| | | 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; |
| | | } |
| | | |
| | | .dataContent .mathData .tdd { |
| | | /*display: none;*/ |
| | | } |
| | | .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{ |
| | | position: sticky; |
| | | left: 0; |
| | | z-index: 1; |
| | | } |
| | | .table tbody tr .kaitou{ |
| | | z-index: 1; |
| | | background-color: white; |
| | | } |
| | | .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; |
| | | } |
| | | } |
| | | @media screen and (min-width: 1680px) and (max-width: 1920px){ |
| | | #Efficiency{ |
| | | height: 337px!important; |
| | | overflow: scroll; |
| | | } |
| | | } |
| | | @media screen and (min-width: 1400px) and (max-width: 1680px){ |
| | | #Efficiency{ |
| | | height: 190px!important; |
| | | overflow: scroll; |
| | | } |
| | | } |
| | | @media screen and (min-width: 1280px) and (max-width: 1400px){ |
| | | #Efficiency{ |
| | | height: 90px!important; |
| | | overflow: scroll; |
| | | } |
| | | } |
| | | @media screen and (max-width: 1280px){ |
| | | #Efficiency{ |
| | | height: 90px!important; |
| | | overflow: scroll; |
| | | } |
| | | } |
| | | #Efficiency .table_guding1{ |
| | | position: absolute; |
| | | overflow: hidden; |
| | | width: 500px; |
| | | } |
| | | #Efficiency .table_guding2{ |
| | | overflow-x: scroll; |
| | | width: 500px; |
| | | } |
| | | /deep/ .ant-card{ |
| | | height: 100%!important; |
| | | } |
| | | /deep/ .ant-card .ant-card-body{ |
| | | height: 100%!important; |
| | | } |
| | | .efficiency_list #DeviceList{ |
| | | height: 90%!important; |
| | | } |
| | | </style> |
| | |
| | | </a-form> |
| | | </div> |
| | | <div id="DeviceList"> |
| | | <div class="openRateTrendDg" style="width: 100%;height: 40%;overflow: scroll"> |
| | | <div id="Efficiency" class="container" style="margin-top: 20px;width: 100%;height: 300px"> |
| | | <div class="table2" style="width: 100%;height: 300px"> |
| | | <table class="dataContent table" border="1" cellspacing="0" cellpadding="0" style="white-space: nowrap;width: 100%;height: 300px;text-align: center;"> |
| | | <div class="openRateTrendDg"> |
| | | <div id="Efficiency" class="container" style="margin-top: 20px;"> |
| | | <div class="table2"> |
| | | <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> |
| | |
| | | } |
| | | </script> |
| | | <style scoped> |
| | | /*.table2{*/ |
| | | /*width: 100%;*/ |
| | | .dataContent { |
| | | white-space: nowrap; |
| | | /*margin: 0;*/ |
| | | /*border: none;*/ |
| | | border-collapse: separate; |
| | | border-spacing: 0; |
| | | /*table-layout: fixed;*/ |
| | | border: 1px solid #ccc; |
| | | /*border: 1px solid #ccc;*/ |
| | | width: 100%; |
| | | /*height: 100%;*/ |
| | | /*overflow: auto;*/ |
| | | /*overflow: hidden;*/ |
| | | /*overflow-y: auto;*/ |
| | | text-align: center; |
| | | } |
| | | |
| | | /*.dataContent .fixed th {*/ |
| | | /*width: 50px;*/ |
| | | /*}*/ |
| | | tr th { |
| | | height: 50px!important; |
| | | |
| | | .dataContent .thead th { |
| | | background-color: #fafafa; |
| | | text-align: center; |
| | | height: 30px; |
| | | padding: 5px; |
| | | } |
| | | tr td{ |
| | | height: 50px!important; |
| | | |
| | | .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; |
| | | } |
| | | |
| | | .dataContent .mathData .tdd { |
| | | /*display: none;*/ |
| | | } |
| | | .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{ |
| | | position: sticky; |
| | |
| | | left: 700px; |
| | | } |
| | | |
| | | /*@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;*/ |
| | | /*}*/ |
| | | /*}*/ |
| | | @media screen and (min-width: 1920px){ |
| | | #Efficiency{ |
| | | height: 337px!important; |
| | | overflow: scroll; |
| | | } |
| | | } |
| | | @media screen and (min-width: 1680px) and (max-width: 1920px){ |
| | | #Efficiency{ |
| | | height: 337px!important; |
| | | overflow: scroll; |
| | | } |
| | | } |
| | | @media screen and (min-width: 1400px) and (max-width: 1680px){ |
| | | #Efficiency{ |
| | | height: 190px!important; |
| | | overflow: scroll; |
| | | } |
| | | } |
| | | @media screen and (min-width: 1280px) and (max-width: 1400px){ |
| | | #Efficiency{ |
| | | height: 90px!important; |
| | | overflow: scroll; |
| | | } |
| | | } |
| | | @media screen and (max-width: 1280px){ |
| | | #Efficiency{ |
| | | height: 90px!important; |
| | | overflow: scroll; |
| | | } |
| | | } |
| | | #Efficiency .table_guding1{ |
| | | position: absolute; |
| | | overflow: hidden; |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div style="width: 100%; height: 100%;"> |
| | | <a-card :bordered="false"> |
| | | <a-row type="flex" :gutter="16"> |
| | | <a-col :md="4"> |
| | | <a-tabs :activeKey="activeKey" @change="tabChange"> |
| | | <a-tab-pane key="1" tab="车é´å±çº§" force-render> |
| | | <base-tree @getCurrSelected="changeSelectionNode"></base-tree> |
| | | </a-tab-pane> |
| | | <a-tab-pane key="2" tab="é¨é¨å±çº§">, |
| | | <depart-tree @getCurrSelectedDD="changeSelectionNodedd" |
| | | ></depart-tree> |
| | | </a-tab-pane> |
| | | </a-tabs> |
| | | </a-col> |
| | | <a-col :md="20"> |
| | | <open-rate-fraction-analysis-main ref="EfficiencyList" :nodePeople='selectPeople' :nodeTree = 'selectEquement' :Type="slectTypeTree"></open-rate-fraction-analysis-main> |
| | | </a-col> |
| | | </a-row> |
| | | </a-card> |
| | | </div> |
| | | |
| | | </template> |
| | | |
| | | <script> |
| | | import { putAction, getAction } from '@/api/manage' |
| | | import { frozenBatch } from '@/api/api' |
| | | import { JeecgListMixin } from '@/mixins/JeecgListMixin' |
| | | import JInput from '@/components/jeecg/JInput' |
| | | import BaseTree from '../common/BaseTree' |
| | | import openRateFractionAnalysisMain from './modules/openRateFractionAnalysis/openRateFractionAnalysisMain' |
| | | import JSuperQuery from '@/components/jeecg/JSuperQuery' |
| | | import JThirdAppButton from '@/components/jeecgbiz/thirdApp/JThirdAppButton' |
| | | import DepartTree from './modules/DepartList/DepartListTree/DepartTree' |
| | | export default { |
| | | name: 'openRateFractionAnalysis', |
| | | components: { |
| | | JThirdAppButton, |
| | | JInput, |
| | | BaseTree, |
| | | JSuperQuery, |
| | | DepartTree, |
| | | openRateFractionAnalysisMain |
| | | }, |
| | | data() { |
| | | return { |
| | | activeKey: '1', |
| | | description: '设å¤ä¿¡æ¯', |
| | | selectEquementId: '', |
| | | selectEquement: {}, |
| | | selectPeople:{}, |
| | | slectTypeTree:"", |
| | | url: { |
| | | equipmentStatistics: '/mdc/equipment/equipmentStatistics' |
| | | } |
| | | } |
| | | }, |
| | | created() { |
| | | }, |
| | | methods: { |
| | | tabChange(val) { |
| | | // console.log(val); |
| | | this.activeKey = val |
| | | this.slectTypeTree = val |
| | | }, |
| | | // changeSelection(val) { |
| | | // this.selectEquementId = val |
| | | // this.$refs.efficiencyList.pQuery(val) |
| | | // this.$refs.efficiencyList.searchQuery() |
| | | // }, |
| | | changeSelectionNode(val) { |
| | | this.selectEquement = val |
| | | this.slectTypeTree = "1" |
| | | }, |
| | | changeSelectionNodedd(val) { |
| | | this.selectPeople = val |
| | | this.slectTypeTree = "2" |
| | | } |
| | | } |
| | | |
| | | } |
| | | </script> |
| | | <style scoped> |
| | | @import '~@assets/less/common.less'; |
| | | |
| | | .equipMessage { |
| | | width: 100%; |
| | | height: 10%; |
| | | } |
| | | |
| | | .equipMessage table { |
| | | width: 60%; |
| | | height: 100%; |
| | | line-height: 50%; |
| | | } |
| | | |
| | | .equipMessage table td { |
| | | text-align: center; |
| | | } |
| | | |
| | | .equipMessage table td span { |
| | | display: inline-block; |
| | | width: 15px; |
| | | height: 15px; |
| | | } |
| | | |
| | | .equipMessage table td .equipShutdown { |
| | | background-color: #808080; |
| | | } |
| | | |
| | | .equipMessage table td .equipStandby { |
| | | background-color: #ffbf37; |
| | | } |
| | | |
| | | .equipMessage table td .equipRun { |
| | | background-color: #19FE01; |
| | | } |
| | | |
| | | .equipMessage table td .equipAlarm { |
| | | background-color: #FD0008; |
| | | } |
| | | </style> |
| | |
| | | </a-tabs> |
| | | </a-col> |
| | | <a-col :md="20"> |
| | | <!--<EfficiencyList ref="EfficiencyList" :nodePeople='selectPeople' :nodeTree = 'selectEquement' :Type="slectTypeTree"></EfficiencyList>--> |
| | | <open-rate-trend-analysis-main ref="EfficiencyList" :nodePeople='selectPeople' :nodeTree = 'selectEquement' :Type="slectTypeTree"></open-rate-trend-analysis-main> |
| | | </a-col> |
| | | </a-row> |
| | |
| | | <a-menu slot="overlay"> |
| | | <a-menu-item><a @click="executeImmediately(record)">ç«å³æ§è¡</a></a-menu-item> |
| | | <a-menu-item><a @click="handleEdit(record)">ç¼è¾</a></a-menu-item> |
| | | <a-menu-item><a @click="handlequartzLog(record)">æ¥å¿</a></a-menu-item> |
| | | <a-menu-item> |
| | | <a-popconfirm title="ç¡®å®å é¤å?" @confirm="() => handleDelete(record.id)"> |
| | | <a>å é¤</a> |
| | |
| | | |
| | | <!-- 表ååºå --> |
| | | <quartzJob-modal ref="modalForm" @ok="modalFormOk"></quartzJob-modal> |
| | | |
| | | <!--æ¥å¿--> |
| | | <quartz-job-list-modal ref="modalFormList" @ok="modalFormOk"></quartz-job-list-modal> |
| | | </a-card> |
| | | </template> |
| | | |
| | | <script> |
| | | import QuartzJobModal from './modules/QuartzJobModal' |
| | | import QuartzJobListModal from './modules/QuartzJobListModal' |
| | | import { getAction } from '@/api/manage' |
| | | import { JeecgListMixin } from '@/mixins/JeecgListMixin' |
| | | import JEllipsis from "@/components/jeecg/JEllipsis"; |
| | |
| | | mixins:[JeecgListMixin], |
| | | components: { |
| | | QuartzJobModal, |
| | | QuartzJobListModal, |
| | | JEllipsis |
| | | }, |
| | | data () { |
| | |
| | | }, |
| | | |
| | | methods: { |
| | | |
| | | handlequartzLog: function (record) { |
| | | this.$refs.modalFormList.openPage(record); |
| | | this.$refs.modalFormList.title = "æ§è¡æ¥å¿"; |
| | | this.$refs.modalFormList.disableSubmit = false; |
| | | }, |
| | | //çééè¦éåhandleTableChange |
| | | handleTableChange(pagination, filters, sorter) { |
| | | //å页ãæåºãçéååæ¶è§¦å |
¶Ô±ÈÐÂÎļþ |
| | |
| | | |
| | | <template> |
| | | <a-modal :title="title" width="100%" :visible="visible" :maskClosable="false" @ok="handleOk" @cancel="handleCancel" |
| | | cancelText="å
³é"> |
| | | <a-card :bordered="false"> |
| | | <div> |
| | | {{textContent}} |
| | | </div> |
| | | </a-card> |
| | | </a-modal> |
| | | </template> |
| | | |
| | | <script> |
| | | |
| | | |
| | | export default { |
| | | name: 'QuartzJobDetails', |
| | | // mixins: [JeecgListMixin], |
| | | components: { |
| | | |
| | | }, |
| | | props: { |
| | | |
| | | }, |
| | | data() { |
| | | return { |
| | | title:'', |
| | | visible:false, |
| | | textContent:'', |
| | | |
| | | } |
| | | }, |
| | | created() { |
| | | |
| | | }, |
| | | watch: { |
| | | |
| | | }, |
| | | methods: { |
| | | showDetails(record){ |
| | | console.log(record) |
| | | this.visible = true |
| | | this.textContent = record.exceptionDetail |
| | | }, |
| | | close() { |
| | | this.$emit('close') |
| | | this.visible = false |
| | | }, |
| | | handleCancel() { |
| | | this.close() |
| | | }, |
| | | handleOk() { |
| | | this.close() |
| | | }, |
| | | }, |
| | | } |
| | | </script> |
| | | <style> |
| | | @import '~@assets/less/common.less'; |
| | | |
| | | .frozenRowClass { |
| | | color: #c9c9c9; |
| | | } |
| | | |
| | | .success { |
| | | color: green; |
| | | } |
| | | |
| | | .error { |
| | | color: red; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | |
| | | <template> |
| | | <a-modal :title="title" width="100%" :visible="visible" :maskClosable="false" @ok="handleOk" @cancel="handleCancel" |
| | | cancelText="å
³é"> |
| | | <a-card :bordered="false"> |
| | | <!-- æ¥è¯¢åºå --> |
| | | <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-input placeholder="请è¾å
¥ä»»å¡åç§°" v-model="queryParam.jobClassName"></a-input> |
| | | </a-form-item> |
| | | </a-col> |
| | | |
| | | <a-col :md="6" :sm="6"> |
| | | <a-form-item label="æ¶é´"> |
| | | <a-range-picker @change="dateParamChange" :disabledDate="disabledDate" format="YYYY-MM-DD HH:mm:ss" v-model="dates"/> |
| | | </a-form-item> |
| | | </a-col> |
| | | <a-col :md="2" :sm="2"> |
| | | <a-button type="primary" @click="searchQuery" icon="search">æ¥è¯¢</a-button> |
| | | </a-col> |
| | | <a-col :md="2" :sm="2"> |
| | | <a-button type="primary" icon="download" @click="handleExportXls('æ§è¡æ¥å¿å¯¼åº')">导åº</a-button> |
| | | </a-col> |
| | | </a-row> |
| | | </a-form> |
| | | </div> |
| | | <!-- æä½æé®åºå --> |
| | | <div class="table-operator"> |
| | | |
| | | <!--<a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">éç½®</a-button>--> |
| | | </div> |
| | | <!-- tableåºå-begin --> |
| | | <div> |
| | | <a-table ref="table" size="middle" bordered rowKey="index" :scroll="{Â y: 400Â }" :columns="columns" |
| | | :dataSource="dataSource" :pagination="ipagination" :loading="loading" |
| | | @change="handleTableChange"> |
| | | <!-- ç¶ææ¸²ææ¨¡æ¿ --> |
| | | <template slot="customRenderStatus" slot-scope="isSuccess"> |
| | | <a-tag v-if="isSuccess==0" color="green">æå</a-tag> |
| | | <a-tag v-if="isSuccess==-1" color="red">失败</a-tag> |
| | | </template> |
| | | <span slot="action" slot-scope="text, record"> |
| | | |
| | | <a v-if="record.isSuccess == -1" @click="executeImmediately(record)">æ¥ç详æ
</a> |
| | | |
| | | </span> |
| | | </a-table> |
| | | </div> |
| | | <!-- tableåºå-end --> |
| | | <quartz-job-details ref="modalForm"></quartz-job-details> |
| | | |
| | | </a-card> |
| | | </a-modal> |
| | | </template> |
| | | |
| | | <script> |
| | | import { filterObj } from '@/utils/util'; |
| | | import { |
| | | ajaxGetSelectItems |
| | | } from '@/api/api' |
| | | import JDictSelectTag from '@/components/dict/JDictSelectTag' |
| | | import { |
| | | deleteAction, |
| | | requestPut, |
| | | getAction, |
| | | downFile, |
| | | postAction |
| | | } from '@/api/manage' |
| | | import { |
| | | JeecgListMixin |
| | | } from '@/mixins/JeecgListMixin' |
| | | import JInput from '@/components/jeecg/JInput' |
| | | import JEllipsis from '@/components/jeecg/JEllipsis' |
| | | import Tooltip from 'ant-design-vue/es/tooltip' |
| | | import JDate from '@/components/jeecg/JDate' |
| | | import moment from 'moment' |
| | | import QuartzJobDetails from './QuartzJobDetails' |
| | | export default { |
| | | name: 'QuartzJobListModal', |
| | | // mixins: [JeecgListMixin], |
| | | components: { |
| | | JDictSelectTag, |
| | | JEllipsis, |
| | | JInput, |
| | | Tooltip, |
| | | JDate, |
| | | QuartzJobDetails |
| | | }, |
| | | props: { |
| | | status: { |
| | | type: Number, |
| | | default: 1 |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | | title:'', |
| | | visible:false, |
| | | /* æ¥è¯¢æ¡ä»¶-请ä¸è¦å¨queryParamä¸å£°æéå符串å¼ç屿§ */ |
| | | queryParam: {}, |
| | | /* æ°æ®æº */ |
| | | dataSource:[], |
| | | /* å页忰 */ |
| | | ipagination:{ |
| | | current: 1, |
| | | pageSize: 10, |
| | | pageSizeOptions: ['10', '20', '30'], |
| | | showTotal: (total, range) => { |
| | | return range[0] + "-" + range[1] + " å
±" + total + "æ¡" |
| | | }, |
| | | showQuickJumper: true, |
| | | showSizeChanger: true, |
| | | total: 0 |
| | | }, |
| | | /* æåºåæ° */ |
| | | isorter:{ |
| | | column: 'createTime', |
| | | order: 'desc', |
| | | }, |
| | | /* çéåæ° */ |
| | | filters: {}, |
| | | /* tableå è½½ç¶æ */ |
| | | loading:false, |
| | | /* tableéä¸keys*/ |
| | | selectedRowKeys: [], |
| | | /* tableéä¸records*/ |
| | | selectionRows: [], |
| | | /* æ¥è¯¢æå */ |
| | | toggleSearchStatus:false, |
| | | /* é«çº§æ¥è¯¢æ¡ä»¶çæç¶æ */ |
| | | superQueryFlag:false, |
| | | /* é«çº§æ¥è¯¢æ¡ä»¶ */ |
| | | superQueryParams: '', |
| | | /** é«çº§æ¥è¯¢æ¼æ¥æ¹å¼ */ |
| | | superQueryMatchType: 'and', |
| | | columns: [ |
| | | { |
| | | title: '#', |
| | | dataIndex: '', |
| | | key: 'rowIndex', |
| | | width: 60, |
| | | align: "center", |
| | | customRender: function (t, r, index) { |
| | | return parseInt(index) + 1; |
| | | } |
| | | }, |
| | | { |
| | | |
| | | title: 'ä»»å¡åç§°', |
| | | align: 'center', |
| | | dataIndex: 'jobClassName', |
| | | }, |
| | | { |
| | | title: 'cron表达å¼', |
| | | align: 'center', |
| | | dataIndex: 'cronExpression', |
| | | }, |
| | | { |
| | | title: 'åæ°', |
| | | align: 'center', |
| | | dataIndex: 'parameter' |
| | | }, |
| | | { |
| | | title: 'æè¿°', |
| | | align: 'center', |
| | | dataIndex: 'description' |
| | | }, |
| | | { |
| | | title: 'æ¥éä¿¡æ¯', |
| | | dataIndex: 'action', |
| | | align:"center", |
| | | scopedSlots: { customRender: 'action' }, |
| | | }, |
| | | { |
| | | title: 'æåæ å¿', |
| | | align: 'center', |
| | | dataIndex: 'isSuccess', |
| | | scopedSlots: { customRender: 'customRenderStatus' }, |
| | | filterMultiple: false, |
| | | filters: [ |
| | | { text: 'æå', value: '0' }, |
| | | { text: '失败', value: '-1' }, |
| | | ] |
| | | }, |
| | | { |
| | | title: 'æ§è¡æ¶é´ï¼æ¯«ç§ï¼', |
| | | align: 'center', |
| | | dataIndex: 'executionTime', |
| | | |
| | | }, |
| | | { |
| | | title: 'å建æ¶é´', |
| | | align: 'center', |
| | | dataIndex: 'createTime' |
| | | }, |
| | | ], |
| | | sectionPData: [], |
| | | sectionData: [], |
| | | url: { |
| | | list: '/sys/quartzLog/list', |
| | | exportXlsUrl:'/sys/quartzLog/exportXls' |
| | | }, |
| | | value:undefined, |
| | | valueProduct:undefined, |
| | | dates: [], |
| | | } |
| | | }, |
| | | created() { |
| | | |
| | | }, |
| | | watch: { |
| | | |
| | | }, |
| | | methods: { |
| | | executeImmediately:function (record) { |
| | | this.$refs.modalForm.showDetails(record); |
| | | this.$refs.modalForm.title = "æ¥éä¿¡æ¯"; |
| | | this.$refs.modalForm.disableSubmit = false; |
| | | }, |
| | | handleExportXls(fileName){ |
| | | if(!fileName || typeof fileName != "string"){ |
| | | fileName = "å¯¼åºæä»¶" |
| | | } |
| | | let param = this.getQueryParams(); |
| | | if(this.selectedRowKeys && this.selectedRowKeys.length>0){ |
| | | param['selections'] = this.selectedRowKeys.join(",") |
| | | } |
| | | console.log("导åºåæ°",param) |
| | | downFile(this.url.exportXlsUrl,param).then((data)=>{ |
| | | if (!data) { |
| | | this.$message.warning("æä»¶ä¸è½½å¤±è´¥") |
| | | return |
| | | } |
| | | if (typeof window.navigator.msSaveBlob !== 'undefined') { |
| | | window.navigator.msSaveBlob(new Blob([data],{type: 'application/vnd.ms-excel'}), fileName+'.xls') |
| | | }else{ |
| | | let url = window.URL.createObjectURL(new Blob([data],{type: 'application/vnd.ms-excel'})) |
| | | let link = document.createElement('a') |
| | | link.style.display = 'none' |
| | | link.href = url |
| | | link.setAttribute('download', fileName+'.xls') |
| | | document.body.appendChild(link) |
| | | link.click() |
| | | document.body.removeChild(link); //ä¸è½½å®æç§»é¤å
ç´ |
| | | window.URL.revokeObjectURL(url); //éæ¾æblob对象 |
| | | } |
| | | }) |
| | | }, |
| | | disabledDate(current) { |
| | | return current && current > moment().subtract('days', 1); |
| | | }, |
| | | dateParamChange(v1, v2) { |
| | | this.queryParam.startTime = v2[0] |
| | | this.queryParam.endTime = v2[1] |
| | | }, |
| | | handleTableChange(pagination, filters, sorter) { |
| | | // this.onClearSelected() |
| | | //å页ãæåºãçéååæ¶è§¦å |
| | | //TODO çé |
| | | console.log(pagination) |
| | | if (Object.keys(sorter).length > 0) { |
| | | this.isorter.column = sorter.field; |
| | | this.isorter.order = "ascend" == sorter.order ? "asc" : "desc" |
| | | } |
| | | this.ipagination = pagination; |
| | | this.loadData(); |
| | | }, |
| | | openPage(record) { |
| | | // console.log(record) |
| | | this.visible = true |
| | | this.dataSource = []; |
| | | this.queryParam = { |
| | | jobId: record.id |
| | | }; |
| | | |
| | | this.loadData(); |
| | | }, |
| | | getQueryParams() { |
| | | //è·åæ¥è¯¢æ¡ä»¶ |
| | | let sqp = {} |
| | | if(this.superQueryParams){ |
| | | sqp['superQueryParams']=encodeURI(this.superQueryParams) |
| | | sqp['superQueryMatchType'] = this.superQueryMatchType |
| | | } |
| | | var param = Object.assign(sqp, this.queryParam, this.isorter ,this.filters); |
| | | param.field = this.getQueryField(); |
| | | param.pageNo = this.ipagination.current; |
| | | param.pageSize = this.ipagination.pageSize; |
| | | //è·åç¨æ·å®å¶ç忰屿§ |
| | | // if (this.getCustomQueryParams) { |
| | | // param = this.getCustomQueryParams(param); |
| | | // if(!param){ |
| | | // return false; |
| | | // } |
| | | // } |
| | | |
| | | return filterObj(param); |
| | | }, |
| | | getQueryField() { |
| | | //TODO åæ®µæéæ§å¶ |
| | | var str = "id,"; |
| | | this.columns.forEach(function (value) { |
| | | str += "," + value.dataIndex; |
| | | }); |
| | | return str; |
| | | }, |
| | | loadData(arg) { |
| | | if(!this.url.list){ |
| | | this.$message.error("请设置url.list屿§!") |
| | | return |
| | | } |
| | | //å è½½æ°æ® è¥ä¼ å
¥åæ°1åå 载第ä¸é¡µçå
容 |
| | | if (arg === 1) { |
| | | this.ipagination.current = 1; |
| | | } |
| | | var params = this.getQueryParams();//æ¥è¯¢æ¡ä»¶ |
| | | |
| | | if(!params){ |
| | | return false; |
| | | } |
| | | |
| | | this.loading = true; |
| | | // params.id = this.queryParam.id |
| | | getAction(this.url.list, params).then((res) => { |
| | | if (res.success) { |
| | | // console.log(res) |
| | | //update-begin---author:zhangyafei Date:20201118 forï¼éé
ä¸åé¡µçæ°æ®å表------------ |
| | | this.dataSource = res.result.records||res.result; |
| | | if(res.result.total) |
| | | { |
| | | this.ipagination.total = res.result.total; |
| | | }else{ |
| | | this.ipagination.total = 0; |
| | | } |
| | | //update-end---author:zhangyafei Date:20201118 forï¼éé
ä¸åé¡µçæ°æ®å表------------ |
| | | }else{ |
| | | this.$message.warning(res.message) |
| | | } |
| | | }).finally(() => { |
| | | this.loading = false |
| | | }) |
| | | }, |
| | | modalFormOk(val) { |
| | | // æ°å¢/ä¿®æ¹ æåæ¶ï¼éè½½å表 |
| | | this.loadData(); |
| | | |
| | | this.selectedRowKeys = [val.id]; |
| | | }, |
| | | searchQuery() { |
| | | this.loadData(); |
| | | }, |
| | | close() { |
| | | this.$emit('close') |
| | | this.visible = false |
| | | }, |
| | | handleCancel() { |
| | | this.close() |
| | | }, |
| | | handleOk() { |
| | | this.close() |
| | | }, |
| | | }, |
| | | } |
| | | </script> |
| | | <style> |
| | | @import '~@assets/less/common.less'; |
| | | |
| | | .frozenRowClass { |
| | | color: #c9c9c9; |
| | | } |
| | | |
| | | .success { |
| | | color: green; |
| | | } |
| | | |
| | | .error { |
| | | color: red; |
| | | } |
| | | </style> |