1、解决车间看板页面因浏览器兼容性问题导致的样式不适配问题(使用浏览器86版本与其他版本做对比)
2、优化车间看板页面代码,将看板拖拽区域设置高度后再设置限制拖拽以试图解决进入页面后有概率设备无法自由拖拽问题(猜想因父子组件渲染顺序导致,父组件还未渲染完成,子组件就已限制区域,此时区域高度可能0,未在现场调试,本地调试无问题)
3、优化设备利用率、开动率及班次利用率页面代码,解决因浏览器版本问题导致表格前3列文字无法垂直排列导致的布局问题以及调整右上角区间展示区域为响应式布局
| | |
| | | <dv-full-screen-container class="full-screen-container"> |
| | | <header class="page-header" :style="{height: pageHeaderHeight+'px'}"> |
| | | {{ workshopDetails.workshopName }} |
| | | <div class="header-left" v-has="'home:saveDevicePositionAndSize'"> |
| | | <div class="header-left" v-has="'home:saveDevicePositionAndSize'" v-if="!isFullScreen"> |
| | | <a-space> |
| | | <span v-if="!isSwitchChecked">开启功能</span> |
| | | <span v-else>关闭功能</span> |
| | |
| | | :y="item.coordinateTop" |
| | | v-on:resizing="resize($event, index)" |
| | | v-on:dragging="resize($event, index)" |
| | | :parentLimitation="true" |
| | | :parentLimitation="parentLimitation" |
| | | :minw="70" |
| | | :minh="70" |
| | | :isDraggable="isDraggable" |
| | |
| | | data() { |
| | | return { |
| | | pageHeaderHeight: 80,// 页头高度 |
| | | taskBarHeight: window.screen.height - window.screen.availHeight,// 屏幕底部任务栏高度 |
| | | utilsBarHeight: window.outerHeight - window.innerHeight,// 浏览器工具栏高度 |
| | | normalPageHeight: 0, |
| | | fullScreenPageHeight: 0, |
| | | workshopDetails: {}, // 车间详细信息, |
| | | isDraggable: false, // 是否开启拖拽 |
| | | isResizable: false, // 是否开启缩放 |
| | |
| | | value: 22, |
| | | color: '#FF0000' |
| | | } |
| | | ]// 设备状态指示灯列表, |
| | | ],// 设备状态指示灯列表, |
| | | windowHeight: null,// 当前浏览器可视区域高度((不包括工具栏、书签、底部任务栏),进入页面时计算一次,除非重新加载页面否则浏览器可视区域高度则不发生改变 |
| | | isFullScreen: false,// 进入看板页面时是否为全屏模式,不包括正常模式进入后切换为全屏模式 |
| | | parentLimitation: false// 拖拽区域是否限制在父元素区域内 |
| | | } |
| | | }, |
| | | watch: { |
| | |
| | | this.$refs.deviceContainerRef.style.backgroundImage = `url(${this.getImgView( |
| | | this.workshopDetails.backgroundImage |
| | | )})` |
| | | this.$refs.deviceContainerRef.style.height = this.normalPageHeight |
| | | |
| | | this.$refs.deviceContainerRef.style.height = (this.windowHeight - this.pageHeaderHeight) + 'px' |
| | | this.parentLimitation = true // 在父元素高度设置后再设置限制拖拽区域,不这样有概率导致父元素高度未设置就限制拖拽 |
| | | }) |
| | | }, |
| | | |
| | |
| | | // setTimeout( this.$refs.equmentDetaiModel.initData(item.equipmentId),0) |
| | | // },1000*10) |
| | | } |
| | | }, |
| | | |
| | | /** |
| | | * 浏览器尺寸发生改变时触发 |
| | | */ |
| | | handleWindowSizeChange() { |
| | | if (this.isFullScreen) location.reload() // 如果页面进入时为全屏模式,则在切换模式时重新加载页面以重新获取浏览器可视区域高度 |
| | | } |
| | | }, |
| | | created() { |
| | | if (this.utilsBarHeight > 0) this.normalPageHeight = `calc(100% - ${this.pageHeaderHeight}px - ${this.taskBarHeight}px - ${this.utilsBarHeight}px)` |
| | | else this.normalPageHeight = `calc(100% - ${this.pageHeaderHeight}px - ${this.taskBarHeight}px - 87px)` |
| | | if (this.$route.params.id) { |
| | | this.getDeviceListByApi(this.$route.params.id) |
| | | this.getWorkshopDetailsByApi(this.$route.params.id) |
| | |
| | | mounted() { |
| | | // 禁止用户选中内容 |
| | | document.onselectstart = () => false |
| | | |
| | | this.windowHeight = |
| | | window.innerHeight || |
| | | document.documentElement.clientHeight || |
| | | document.body.clientHeight |
| | | |
| | | // 判断浏览器可视区域高度是否等于分辨率,若相等则表示进入时浏览器为全屏模式 |
| | | if (this.windowHeight === screen.height) this.isFullScreen = true |
| | | |
| | | window.addEventListener('resize', this.handleWindowSizeChange) |
| | | }, |
| | | beforeDestroy() { |
| | | // 确保销毁定时器、事件及回收资源 |
| | |
| | | .header-left { |
| | | width: 450px; |
| | | position: absolute; |
| | | left: 0px; |
| | | left: 0; |
| | | top: 35px; |
| | | display: flex; |
| | | justify-content: space-evenly; |
| | |
| | | width: 100%; |
| | | height: 100%; |
| | | display: flex; |
| | | align-items: end; |
| | | -webkit-align-items: flex-end; |
| | | -moz-align-items: flex-end; |
| | | -ms-align-items: flex-end; |
| | | |
| | | .status-image { |
| | | background-size: 100% 100%; |
| | |
| | | <a-range-picker @change="dateParamChange" :disabledDate="disabledDate" format="YYYYMMDD" v-model="dates"/> |
| | | </a-form-item> |
| | | </a-col> |
| | | <a-col :md="14" :sm="14"> |
| | | <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"> |
| | | <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> |
| | | </a-col> |
| | | </a-row> |
| | | <a-row :gutter="24"> |
| | |
| | | </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 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>--> |
| | | <a-spin :spinning="spinning"> |
| | | <div class="container" id="EfficiencyPO" style="margin-top: 20px;" > |
| | | <div class="table2"> |
| | |
| | | <tbody> |
| | | <tr class="mathData" v-for="(item, index) in dataList"> |
| | | <template v-if="item.level1!=='合计'&&item.level1!=='平均值'"> |
| | | <td class="tdgu kaitou wenzi" :rowspan="item.level1span" :class="{hidden: item.level1dis,noExl:item.level1dis}" v-show="!item.level1dis">{{item.level1}}</td> |
| | | <td class="tdgu1 kaitou wenzi" :rowspan="item.level2span" :class="{hidden: item.level2dis,noExl:item.level2dis}" v-show="!item.level2dis">{{item.level2}}</td> |
| | | <td class="tdgu2 kaitou wenzi" :rowspan="item.level3span" :class="{hidden: item.level3dis,noExl:item.level3dis}" v-show="!item.level3dis">{{item.level3}}</td> |
| | | <td class="tdgu kaitou" :rowspan="item.level1span" :class="{hidden: item.level1dis,noExl:item.level1dis}" v-show="!item.level1dis"> |
| | | <div class="wenzi"> |
| | | {{item.level1}} |
| | | </div> |
| | | </td> |
| | | <td class="tdgu1 kaitou" :rowspan="item.level2span" :class="{hidden: item.level2dis,noExl:item.level2dis}" v-show="!item.level2dis"> |
| | | <div class="wenzi"> |
| | | {{item.level2}} |
| | | </div> |
| | | </td> |
| | | <td class="tdgu2 kaitou" :rowspan="item.level3span" :class="{hidden: item.level3dis,noExl:item.level3dis}" v-show="!item.level3dis"> |
| | | <div class="wenzi"> |
| | | {{item.level3}} |
| | | </div> |
| | | </td> |
| | | <td class="tdgu3 kaitou">{{item.equipmentId}}</td> |
| | | <td style="min-width: 162px; max-width: 162px;width: 162px;" class="tdgu4 kaitou">{{item.equipmentName}}</td> |
| | | <td class="tdgu5 kaitou">{{item.equipmentType}}</td> |
| | |
| | | v-model="dates"/> |
| | | </a-form-item> |
| | | </a-col> |
| | | <a-col :md="14" :sm="14"> |
| | | <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"> |
| | | <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> |
| | | </a-col> |
| | | </a-row> |
| | | <a-row :gutter="24"> |
| | |
| | | </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 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"> |
| | |
| | | |
| | | <tr class="mathData" v-for="(item, index) in dataList"> |
| | | <template v-if="item.level1!=='合计'&&item.level1!=='平均值'"> |
| | | <td class="tdgu kaitou wenzi" :rowspan="item.level1span" |
| | | :class="{hidden: item.level1dis,noExl:item.level1dis}" v-show="!item.level1dis">{{item.level1}} |
| | | <td class="tdgu kaitou" :rowspan="item.level1span" |
| | | :class="{hidden: item.level1dis,noExl:item.level1dis}" v-show="!item.level1dis"> |
| | | <div class="wenzi"> |
| | | {{item.level1}} |
| | | </div> |
| | | </td> |
| | | <td class="tdgu1 kaitou wenzi" :rowspan="item.level2span" |
| | | :class="{hidden: item.level2dis,noExl:item.level2dis}" v-show="!item.level2dis">{{item.level2}} |
| | | <td class="tdgu1 kaitou" :rowspan="item.level2span" |
| | | :class="{hidden: item.level2dis,noExl:item.level2dis}" v-show="!item.level2dis"> |
| | | <div class="wenzi"> |
| | | {{item.level2}} |
| | | </div> |
| | | </td> |
| | | <td class="tdgu2 kaitou wenzi" :rowspan="item.level3span" |
| | | :class="{hidden: item.level3dis,noExl:item.level3dis}" v-show="!item.level3dis">{{item.level3}} |
| | | :class="{hidden: item.level3dis,noExl:item.level3dis}" v-show="!item.level3dis"> |
| | | <div class="wenzi"> |
| | | {{item.level3}} |
| | | </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> |
| | |
| | | </a-select> |
| | | </a-form-item> |
| | | </a-col> |
| | | </a-row> |
| | | <a-row :gutter="24"> |
| | | <a-col :md="9" :sm="9" :xs="9"> |
| | | <a-checkbox-group :value="checkedList" :default-value="['lyl']" :options="efficiencyOptions" |
| | | @change="efficiencyOptionsOnChange"/> |
| | | </a-col> |
| | | <a-col :md="5" :sm="5"> |
| | | <a-col :md="7" :sm="7" :xs="7"> |
| | | <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> |
| | | </a-col> |
| | | <a-col :md="10" :sm="10"> |
| | | </a-row> |
| | | <a-row :gutter="24"> |
| | | <a-col :md="24" :sm="24" :xs="24" style="display: flex;justify-content: space-between"> |
| | | <a-checkbox-group :value="checkedList" :default-value="['lyl']" :options="efficiencyOptions" |
| | | @change="efficiencyOptionsOnChange"/> |
| | | <table cellpadding="5" cellspacing="1" style="border: 1px solid darkgray;"> |
| | | <tr> |
| | | <td v-for="(item, index) in identifying">{{item.title}}</td> |
| | |
| | | <tbody> |
| | | <tr class="mathData" v-for="(item, index) in dataList"> |
| | | <template v-if="item.level1!=='合计'&&item.level1!=='平均值'"> |
| | | <td class="tdgu kaitou wenzi" :rowspan="item.level1span" :class="{hidden: item.level1dis,noExl:item.level1dis}" v-show="!item.level1dis">{{item.level1}}</td> |
| | | <td class="tdgu1 kaitou wenzi" :rowspan="item.level2span" :class="{hidden: item.level2dis,noExl:item.level2dis}" v-show="!item.level2dis">{{item.level2}}</td> |
| | | <td class="tdgu2 kaitou wenzi" :rowspan="item.level3span" :class="{hidden: item.level3dis,noExl:item.level3dis}" v-show="!item.level3dis">{{item.level3}}</td> |
| | | <td class="tdgu kaitou" :rowspan="item.level1span" :class="{hidden: item.level1dis,noExl:item.level1dis}" v-show="!item.level1dis"> |
| | | <div class="wenzi"> |
| | | {{item.level1}} |
| | | </div></td> |
| | | <td class="tdgu1 kaitou" :rowspan="item.level2span" :class="{hidden: item.level2dis,noExl:item.level2dis}" v-show="!item.level2dis"> |
| | | <div class="wenzi"> |
| | | {{item.level2}} |
| | | </div> |
| | | </td> |
| | | <td class="tdgu2 kaitou" :rowspan="item.level3span" :class="{hidden: item.level3dis,noExl:item.level3dis}" v-show="!item.level3dis"> |
| | | <div class="wenzi"> |
| | | {{item.level3}} |
| | | </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="tdgu5 kaitou">{{item.equipmentType}}</td> |