From d92ca6fdca6e7dae8c9ff4596e2ad3519f9843c6 Mon Sep 17 00:00:00 2001
From: zhuzhuanzhuan
Date: 星期一, 07 八月 2023 17:38:11 +0800
Subject: [PATCH] 利用率走势界面的样式调整,利用率分段分析界面绘制,接口调取,渲染,功能的完成,定时任务加日志展示详情的处理
---
src/views/mdc/base/modules/openRateTrendAnalysis/openRateTrendAnalysisMain.vue | 137 ++++--
src/views/mdc/base/openRateTrendAnalysis.vue | 1
src/views/mdc/base/modules/openRateFractionAnalysis/openRateFractionAnalysisMain.vue | 547 ++++++++++++++++++++++++
src/views/mdc/base/openRateFractionAnalysis.vue | 122 +++++
src/views/system/QuartzJobList.vue | 14
src/views/system/modules/QuartzJobListModal.vue | 383 +++++++++++++++++
src/views/system/modules/QuartzJobDetails.vue | 72 +++
7 files changed, 1,229 insertions(+), 47 deletions(-)
diff --git a/src/views/mdc/base/modules/openRateFractionAnalysis/openRateFractionAnalysisMain.vue b/src/views/mdc/base/modules/openRateFractionAnalysis/openRateFractionAnalysisMain.vue
new file mode 100644
index 0000000..8a5052c
--- /dev/null
+++ b/src/views/mdc/base/modules/openRateFractionAnalysis/openRateFractionAnalysisMain.vue
@@ -0,0 +1,547 @@
+<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>
\ No newline at end of file
diff --git a/src/views/mdc/base/modules/openRateTrendAnalysis/openRateTrendAnalysisMain.vue b/src/views/mdc/base/modules/openRateTrendAnalysis/openRateTrendAnalysisMain.vue
index c671ece..a8c7da6 100644
--- a/src/views/mdc/base/modules/openRateTrendAnalysis/openRateTrendAnalysisMain.vue
+++ b/src/views/mdc/base/modules/openRateTrendAnalysis/openRateTrendAnalysisMain.vue
@@ -17,10 +17,10 @@
</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>
@@ -370,17 +370,66 @@
}
</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;
@@ -456,36 +505,36 @@
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;
@@ -495,9 +544,9 @@
overflow-x: scroll;
width: 500px;
}
- /deep/ .ant-card{
- height: 100%!important;
- }
+ /deep/ .ant-card{
+ height: 100%!important;
+ }
/deep/ .ant-card .ant-card-body{
height: 100%!important;
}
diff --git a/src/views/mdc/base/openRateFractionAnalysis.vue b/src/views/mdc/base/openRateFractionAnalysis.vue
new file mode 100644
index 0000000..e54e962
--- /dev/null
+++ b/src/views/mdc/base/openRateFractionAnalysis.vue
@@ -0,0 +1,122 @@
+<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>
\ No newline at end of file
diff --git a/src/views/mdc/base/openRateTrendAnalysis.vue b/src/views/mdc/base/openRateTrendAnalysis.vue
index 07c67b2..f2df369 100644
--- a/src/views/mdc/base/openRateTrendAnalysis.vue
+++ b/src/views/mdc/base/openRateTrendAnalysis.vue
@@ -14,7 +14,6 @@
</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>
diff --git a/src/views/system/QuartzJobList.vue b/src/views/system/QuartzJobList.vue
index ed57aa3..9596938 100644
--- a/src/views/system/QuartzJobList.vue
+++ b/src/views/system/QuartzJobList.vue
@@ -85,6 +85,7 @@
<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>
@@ -105,11 +106,15 @@
<!-- 琛ㄥ崟鍖哄煙 -->
<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";
@@ -119,6 +124,7 @@
mixins:[JeecgListMixin],
components: {
QuartzJobModal,
+ QuartzJobListModal,
JEllipsis
},
data () {
@@ -204,7 +210,11 @@
},
methods: {
-
+ handlequartzLog: function (record) {
+ this.$refs.modalFormList.openPage(record);
+ this.$refs.modalFormList.title = "鎵ц鏃ュ織";
+ this.$refs.modalFormList.disableSubmit = false;
+ },
//绛涢�夐渶瑕侀噸鍐檋andleTableChange
handleTableChange(pagination, filters, sorter) {
//鍒嗛〉銆佹帓搴忋�佺瓫閫夊彉鍖栨椂瑙﹀彂
@@ -214,7 +224,7 @@
this.isorter.order = "ascend" == sorter.order ? "asc" : "desc"
}
//杩欑绛涢�夋柟寮忓彧鏀寔鍗曢��
-
+
// update-begin-author:liusq date:20210624 for:鍓嶅彴瀹氭椂浠诲姟鏃犳硶缈婚〉 #2666
if(filters && Object.keys(filters).length>0 && filters.status){
this.filters.status = filters.status[0];
diff --git a/src/views/system/modules/QuartzJobDetails.vue b/src/views/system/modules/QuartzJobDetails.vue
new file mode 100644
index 0000000..db41484
--- /dev/null
+++ b/src/views/system/modules/QuartzJobDetails.vue
@@ -0,0 +1,72 @@
+
+<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>
diff --git a/src/views/system/modules/QuartzJobListModal.vue b/src/views/system/modules/QuartzJobListModal.vue
new file mode 100644
index 0000000..32e14c5
--- /dev/null
+++ b/src/views/system/modules/QuartzJobListModal.vue
@@ -0,0 +1,383 @@
+
+<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涓0鏄庨潪瀛楃涓插�肩殑灞炴�� */
+ 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); //閲婃斁鎺塨lob瀵硅薄
+ }
+ })
+ },
+ 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("璇疯缃畊rl.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>
--
Gitblit v1.9.3