¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div id="mdcLogLayout" style="width: 100%; height: 100%; overflow: hidden"> |
| | | <!-- æ¥è¯¢åºå --> |
| | | <div class="table-page-search-wrapper"> |
| | | <a-form layout="inline" @keyup.enter.native="searchQuery"> |
| | | <a-row :gutter="24"> |
| | | <a-col :md="4" :sm="4"> |
| | | <a-form-item label="设å¤ç¼å·"> |
| | | <a-input placeholder="è¯·éæ©è®¾å¤" :readOnly="readOnly" v-model="queryParams.equipmentId"></a-input> |
| | | </a-form-item> |
| | | </a-col> |
| | | <a-col :md="6" :sm="6"> |
| | | <a-form-item label="å®è£
ä½ç½®"> |
| | | <a-input placeholder="è¯·éæ©è®¾å¤" :readOnly="readOnly" v-model="queryParams.equipmentName"></a-input> |
| | | </a-form-item> |
| | | </a-col> |
| | | <a-col :md="4" :sm="4"> |
| | | <a-form-item label="æ¥æ"> |
| | | <a-date-picker v-model="queryParams.collectTime" :disabledDate="disabledDate" @change="dataChange" |
| | | format='YYYY-MM-DD'/> |
| | | </a-form-item> |
| | | </a-col> |
| | | <a-col :md="2" :sm="2" :xs="2"> |
| | | <a-space> |
| | | <a-button type="primary" @click="searchQuery" icon="search">æ¥è¯¢</a-button> |
| | | <a-button type="primary" @click="searchReset" icon="reload">éç½®</a-button> |
| | | </a-space> |
| | | </a-col> |
| | | </a-row> |
| | | </a-form> |
| | | </div> |
| | | <div style="width: 100%;height: 180px;border: none;" align="center"> |
| | | <table cellpadding="0" cellspacing="0" width="100%"> |
| | | <tr> |
| | | <td> |
| | | <table width="100%"> |
| | | <tr style="word-break: keep-all;"> |
| | | <td align="right"><a id="btnMdcLogWline" href="#"> |
| | | <div style="padding-top: 15px;" @click="openWorkChart"> |
| | | <img src="../../../../../assets/image/linechart.png" alt=""> |
| | | <p>工使²çº¿</p> |
| | | </div> |
| | | </a></td> |
| | | <td width="100%" height="100%"> |
| | | <table width="100%" height="100%" align="center" cellpadding="0" cellspacing="0"> |
| | | <tr> |
| | | <td style="word-break: keep-all;" align="left"> |
| | | <div |
| | | style="width: 100%; height: 62px;border: 1px solid;border-color: #9d9d9d;position: relative;overflow: hidden"> |
| | | <div class="mdcLogShowOne" |
| | | :style='{display: "inline-block",width:item.dateProportion, height: "100%"}' |
| | | v-for="item in normal"> |
| | | <span v-if="item.status == 0" |
| | | :style='{display: "inline-block",width:item.dateProportion, height: "100%", background: "#A8A8A8",position:"absolute",top:"0"}'></span> |
| | | <span v-if="item.status == 1" |
| | | :style='{display: "inline-block",width:item.dateProportion, height: "100%", background: "#fffc5c",position:"absolute",top:"0"}'></span> |
| | | <span v-if="item.status == 2" |
| | | :style='{display: "inline-block",width:item.dateProportion, height: "100%", background: "#fffc5c",position:"absolute",top:"0"}'></span> |
| | | <span v-if="item.status == 3" |
| | | :style='{display: "inline-block",width:item.dateProportion, height: "100%", background: "#19FE01",position:"absolute",top:"0"}'></span> |
| | | <span v-if="item.status == 23" |
| | | :style='{display: "inline-block",width:item.dateProportion, height: "100%", background: "#19FE01",position:"absolute",bottom:"0"}'></span> |
| | | </div> |
| | | <div v-if="item.status == 22" style="z-index: 999;" |
| | | :style='{display: "inline-block",left:item.left,width:item.dateProportion, height: "100%",position:"absolute"}' |
| | | v-for="item in waring"> |
| | | <span |
| | | :style='{display: "inline-block",width:"100%", left:0, height: "68%", background: "#FD0008",position:"absolute",bottom:"0"}'></span> |
| | | </div> |
| | | </div> |
| | | </td> |
| | | </tr> |
| | | </table> |
| | | </td> |
| | | <td align="left"><a id="btnMdcLogBar" href="#"> |
| | | <div style="padding-top: 15px;" @click="openHistoryChart"> |
| | | <img src="../../../../../assets/image/Histogram.png" alt=""> |
| | | <p>åå²è®°å½</p> |
| | | </div> |
| | | </a></td> |
| | | </tr> |
| | | <tr> |
| | | <td align="right">0</td> |
| | | <td width="100%"> |
| | | <table width="100%;" cellpadding="0" cellspacing="0"> |
| | | <tr align="right" style="word-break: keep-all;"> |
| | | <td>02:00</td> |
| | | <td>04:00</td> |
| | | <td>06:00</td> |
| | | <td>08:00</td> |
| | | <td>10:00</td> |
| | | <td>12:00</td> |
| | | <td>14:00</td> |
| | | <td>16:00</td> |
| | | <td>18:00</td> |
| | | <td>20:00</td> |
| | | <td>22:00</td> |
| | | <td>24:00</td> |
| | | </tr> |
| | | </table> |
| | | </td> |
| | | <td></td> |
| | | </tr> |
| | | </table> |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td> |
| | | <table width="400px;" align="center" style="margin-top: 20px;"> |
| | | <tr> |
| | | <td align="right"><a id="btnMdcLogPreviousDay" style="margin-right:15px"> |
| | | <img @click="dataBefore" src="../../../../../assets/image/left.png" alt=""> |
| | | </a></td> |
| | | <td align="right">å
³æº</td> |
| | | <td align="left"> |
| | | <div style="width: 15px;height: 15px;background-color: #A8A8A8;position: static;"/> |
| | | </td> |
| | | <td align="right">å¾
æº</td> |
| | | <td align="left"> |
| | | <div style="width: 15px;height: 15px;background-color: #ffea91"/> |
| | | </td> |
| | | <td align="right">è¿è¡</td> |
| | | <td align="left"> |
| | | <div style="width: 15px;height: 15px;background-color: #00ee00"/> |
| | | </td> |
| | | <td align="right">æ¥è¦</td> |
| | | <td align="left"> |
| | | <div style="width: 15px;height: 15px;background-color: red"/> |
| | | </td> |
| | | <td><a id="btnMdcLogAfterDay" style="margin-left:20px"> |
| | | <img @click="dataAfter" src="../../../../../assets/image/right.png" alt=""> |
| | | </a></td> |
| | | </tr> |
| | | </table> |
| | | </td> |
| | | </tr> |
| | | </table> |
| | | </div> |
| | | <div id="mdcLogTabs" class="mdcLogTabs-title" style="width: 100%;"> |
| | | <div> |
| | | <a-tabs :activeKey="activeKey" @change="tabChange"> |
| | | <a-tab-pane key="1" tab="è®¾å¤æ¥å¿" force-render> |
| | | <log-list :dataList='normalList' ref="logList" :loadingequip='loadingStatus'></log-list> |
| | | </a-tab-pane> |
| | | <a-tab-pane key="2" tab="è¿è¡æ¥å¿"> |
| | | <work-log-list :dataList='runList' ref="workLogList" :loadingrun="loadingRunStatus"></work-log-list> |
| | | </a-tab-pane> |
| | | <a-tab-pane key="3" tab="æ¥è¦æ¥å¿"> |
| | | <alarm-log-list :dataList='waringList' ref="alarmLogList" :loadingwarn="loadingWarnStatus"></alarm-log-list> |
| | | </a-tab-pane> |
| | | </a-tabs> |
| | | </div> |
| | | </div> |
| | | <work-chart-model ref="workChartModel" :collectTime="this.queryParams.collectTime" |
| | | :equipment="this.equipment"></work-chart-model> |
| | | <work-history-model ref="workHistoryModel"></work-history-model> |
| | | </div> |
| | | </template> |
| | | |
| | | |
| | | <script> |
| | | import moment from 'moment' |
| | | import LogList from './LogList' |
| | | import WorkLogList from './WorkLogList' |
| | | import AlarmLogList from './AlarmLogList' |
| | | import WorkChartModel from './WorkChartModel' |
| | | import WorkHistoryModel from './WorkHistoryModel' |
| | | import { getAction } from '@/api/manage' |
| | | |
| | | export default { |
| | | components: { |
| | | LogList, |
| | | WorkLogList, |
| | | AlarmLogList, |
| | | WorkChartModel, |
| | | WorkHistoryModel |
| | | }, |
| | | props: { equipment: {} }, |
| | | data() { |
| | | return { |
| | | readOnly: true, |
| | | defaultId: '', |
| | | defaultName: '', |
| | | middleTime: '', |
| | | queryParam: {}, |
| | | queryParams: { |
| | | collectTime: undefined |
| | | }, |
| | | loadingStatus: false, |
| | | loadingRunStatus: false, |
| | | loadingWarnStatus: false, |
| | | normal: [], |
| | | waring: [], |
| | | normalList: [], |
| | | waringList: [], |
| | | runList: [], |
| | | activeKey: '1', |
| | | equipment: {}, |
| | | url: { |
| | | getBaseTree: '/mdc/mdcequipment/loadTree', |
| | | getEquipmentByPid: '/mdc/mdcEquipment/getEquipmentByPid', |
| | | list: '/mdc/mdcEquipmentRunningSection/logList' |
| | | }, |
| | | ProStartId: '' |
| | | } |
| | | }, |
| | | methods: { |
| | | tabChange(val) { |
| | | this.activeKey = val |
| | | }, |
| | | disabledDate(current) { |
| | | return current && current > moment().subtract('days', 0) |
| | | }, |
| | | queryChart() { |
| | | // this.normal = [] |
| | | // this.waring = [] |
| | | this.loadingStatus = true |
| | | this.loadingRunStatus = true |
| | | this.loadingWarnStatus = true |
| | | getAction(this.url.list, this.queryParams).then((res) => { |
| | | this.normalList = [] |
| | | this.waringList = [] |
| | | this.runList = [] |
| | | this.loadingStatus = false |
| | | this.loadingRunStatus = false |
| | | this.loadingWarnStatus = false |
| | | this.normal = [] |
| | | this.waring = [] |
| | | if (res.success) { |
| | | if (res.result != null) { |
| | | for (let i = 0; i < res.result.length; i++) { |
| | | this.normalList.push(res.result[i]) |
| | | if ('22' == res.result[i].status) { |
| | | this.waringList.push(res.result[i]) |
| | | res.result[i].dateProportion = res.result[i].duration / 86400 * 100 + '%' |
| | | let leftTmp = (moment(res.result[i].startTime, 'YYYY-MM-DD HH:mm:ss').valueOf() - 57600000) / 1000 % 86400 |
| | | res.result[i].left = leftTmp / 86400 * 100 + '%' |
| | | this.waring.push(res.result[i]) |
| | | |
| | | } else if ('3' == res.result[i].status) { |
| | | this.runList.push(res.result[i]) |
| | | res.result[i].dateProportion = res.result[i].duration / 86400 * 100 + '%' |
| | | this.normal.push(res.result[i]) |
| | | } else { |
| | | res.result[i].dateProportion = res.result[i].duration / 86400 * 100 + '%' |
| | | this.normal.push(res.result[i]) |
| | | } |
| | | } |
| | | } |
| | | } |
| | | }).finally(() => { |
| | | this.loading = false |
| | | this.cardLoading = false |
| | | }) |
| | | }, |
| | | dataChange(val) { |
| | | this.queryParams.collectTime = val |
| | | this.queryParams.collectTimeStr = this.queryParams.collectTime.format('YYYY-MM-DD') |
| | | }, |
| | | searchQuery() { |
| | | // console.log(this.queryParams.collectTime) |
| | | this.queryParams.collectTimeStr = this.queryParams.collectTime.format('YYYY-MM-DD') |
| | | if (!this.queryParams.equipmentId || !this.queryParams.equipmentName) { |
| | | this.$notification.warning({ |
| | | message: 'æ¶æ¯', |
| | | description: 'è¯·éæ©è®¾å¤' |
| | | }) |
| | | return false |
| | | } |
| | | this.queryChart() |
| | | }, |
| | | searchReset() { |
| | | this.queryParams = { |
| | | collectTime : moment() |
| | | } |
| | | this.equipment = {} |
| | | this.queryChart() |
| | | }, |
| | | openWorkChart() { |
| | | if (!this.equipment.equipmentId) { |
| | | this.$notification.warning({ |
| | | message: 'æ¶æ¯', |
| | | description: 'è¯·éæ©è®¾å¤è¿è¡æ¥è¯¢' |
| | | }) |
| | | } else { |
| | | // 夿æ¯å¦ç¹å»è®¾å¤æ¥å¿è¡¨æ ¼è¡çæ°æ®ï¼æ¤æ¶ä¸ºç¹å»è¡¨æ ¼æ°æ®ä¸ºfalse |
| | | this.$refs.workChartModel.isClicklogListRow = false |
| | | this.$refs.workChartModel.add(this.equipment) |
| | | this.$refs.workChartModel.title = '工使²çº¿' |
| | | } |
| | | }, |
| | | openHistoryChart() { |
| | | if (!this.equipment.equipmentId) { |
| | | this.$notification.warning({ |
| | | message: 'æ¶æ¯', |
| | | description: 'è¯·éæ©è®¾å¤è¿è¡æ¥è¯¢' |
| | | }) |
| | | } else { |
| | | this.$refs.workHistoryModel.add(this.equipment) |
| | | this.$refs.workHistoryModel.title = 'å岿¥å¿' |
| | | } |
| | | |
| | | }, |
| | | dataBefore() { |
| | | this.queryParams.collectTime = moment(this.queryParams.collectTime.add(-1, 'd'), 'YYYY-MM-DD') |
| | | this.searchQuery() |
| | | }, |
| | | dataAfter() { |
| | | if ((this.queryParams.collectTime).format('YYYY-MM-DD') == moment().format('YYYY-MM-DD')) { |
| | | this.$notification.warning({ |
| | | message: 'æ¶æ¯', |
| | | description: 'è¯·éæ©ä»å¤©ä»¥åä»å¤©ä¹åçæ¥æï¼ï¼' |
| | | }) |
| | | } else { |
| | | this.queryParams.collectTime = moment(this.queryParams.collectTime.add(1, 'd'), 'YYYY-MM-DD') |
| | | this.searchQuery() |
| | | } |
| | | |
| | | }, |
| | | initEquipment(id) { |
| | | let _this = this |
| | | getAction(this.url.getEquipmentByPid, { pid: id }).then((res) => { |
| | | if (res.success) { |
| | | if (res.result != null) { |
| | | _this.$set(this.queryParams, 'equipmentName', res.result.equipmentName) |
| | | _this.$set(this.queryParams, 'equipmentId', res.result.equipmentId) |
| | | _this.equipment = res.result |
| | | _this.searchQuery() |
| | | } else { |
| | | this.queryParams = {} |
| | | this.equipment = {} |
| | | _this.$notification.warning({ |
| | | message: 'æ¶æ¯', |
| | | description: '请è系管çåï¼å¼æ¾è®¾å¤æéï¼' |
| | | }) |
| | | } |
| | | } else { |
| | | _this.$notification.warning({ |
| | | message: 'æ¶æ¯', |
| | | description: res.message |
| | | }) |
| | | |
| | | } |
| | | }) |
| | | } |
| | | }, |
| | | created() { |
| | | this.queryParams.collectTime = moment() |
| | | this.queryParams.collectTimeStr = this.queryParams.collectTime.format('YYYY-MM-DD') |
| | | this.initEquipment() |
| | | }, |
| | | watch: { |
| | | equipment(val) { |
| | | if (val && val.equipmentId) { |
| | | this.$set(this.queryParams, 'equipmentName', val.equipmentName) |
| | | this.$set(this.queryParams, 'equipmentId', val.equipmentId) |
| | | this.equipment = val |
| | | this.searchQuery() |
| | | } else { |
| | | this.initEquipment(val.key) |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style scoped="scoped"> |
| | | .mdcLogTabs-title { |
| | | display: flex; |
| | | width: 100%; |
| | | } |
| | | |
| | | .mdcLogTabs-title > div { |
| | | margin: 2px 5px; |
| | | width: 100%; |
| | | color: #000; |
| | | font-weight: 600; |
| | | padding: 3px; |
| | | border-radius: 5px; |
| | | } |
| | | |
| | | .btnMdcLogSearch { |
| | | position: relative; |
| | | margin-left: 10px; |
| | | } |
| | | |
| | | .btnMdcLogSearch .btnMdcLogSearchZi { |
| | | position: absolute; |
| | | left: 3px; |
| | | } |
| | | |
| | | .btnMdcLogSearch input { |
| | | padding-left: 23px; |
| | | border-radius: 5px; |
| | | outline: none; |
| | | color: #000; |
| | | border: 1px solid #000; |
| | | } |
| | | |
| | | #mdcLogShow { |
| | | display: flex; |
| | | } |
| | | |
| | | #mdcLogShow > div { |
| | | flex: 1; |
| | | } |
| | | |
| | | /*.mdcLogShowOne{*/ |
| | | /*position: absolute;*/ |
| | | /*}*/ |
| | | </style> |