| | |
| | | @change="selectChange($event,'equipmentType')" |
| | | > |
| | | <a-select-option v-for="(item,index) in equipmentTypeList" :value="item.value" :key="index"> |
| | | {{item.label}} |
| | | {{ item.label }} |
| | | </a-select-option> |
| | | </a-select> |
| | | </a-form-item> |
| | |
| | | @change="selectChange($event,'driveType')" |
| | | > |
| | | <a-select-option v-for="(item,index) in driveTypeList" :value="item.value" :key="index"> |
| | | {{item.label}} |
| | | {{ item.label }} |
| | | </a-select-option> |
| | | </a-select> |
| | | </a-form-item> |
| | |
| | | @change="selectChange($event,'deviceLevel')" |
| | | > |
| | | <a-select-option v-for="(item,index) in device_level_list" :value="item.value" :key="index"> |
| | | {{item.label}} |
| | | {{ item.label }} |
| | | </a-select-option> |
| | | </a-select> |
| | | </a-form-item> |
| | |
| | | <a-col :md="6" :sm="6" :xs="6"> |
| | | <a-form-item label="重要程度"> |
| | | <a-select |
| | | :value="queryParams.deviceImportanceLevel" |
| | | mode="multiple" |
| | | v-model="queryParam.deviceImportanceLevel" |
| | | placeholder="请选择设备重要程度" |
| | | allow-clear |
| | | :maxTagCount="1" |
| | | @change="selectChange($event,'deviceImportanceLevel')" |
| | | > |
| | | <a-select-option v-for="(item,index) in device_importance_level_list" :value="item.value" |
| | | :key="index"> |
| | | {{item.label}} |
| | | {{ item.label }} |
| | | </a-select-option> |
| | | </a-select> |
| | | </a-form-item> |
| | |
| | | > |
| | | <a-select-option v-for="(item,index) in percentage_level_list" :value="item.value" |
| | | :key="index"> |
| | | {{item.label}} |
| | | {{ item.label }} |
| | | </a-select-option> |
| | | </a-select> |
| | | </a-form-item> |
| | |
| | | <!--</template>--> |
| | | </a-table> |
| | | </div> |
| | | <!--<div class="pagination">--> |
| | | <!--<a-pagination--> |
| | | <!--:total=dataSource.total--> |
| | | <!--:show-total="(total, range) => `${range[0]}-${range[1]} 共 ${total} 条`"--> |
| | | <!--:page-size="+queryParam.pageSize"--> |
| | | <!--:default-current="1"--> |
| | | <!--:current=+queryParam.pageNo--> |
| | | <!--show-size-changer--> |
| | | <!--:pageSizeOptions="['20','30','40','50']"--> |
| | | <!--@change="handlePageNoChange"--> |
| | | <!--@showSizeChange="handlePageSizeChange"--> |
| | | <!--/>--> |
| | | <!--</div>--> |
| | | </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 api from '@api/mdc' |
| | | import moment from 'moment' |
| | | import { getAction } from '@/api/manage' |
| | | import $ from 'jquery' |
| | | import '@/components/table2excel/table2excel' |
| | | import { ajaxGetDictItems, getDictItemsFromCache } from '@/api/api' |
| | | import api from '@api/mdc' |
| | | |
| | | // import EditableCell from './EditableCell.vue' |
| | | // import EditableCell from './EditableCell.vue' |
| | | |
| | | export default { |
| | | name: 'OEEAnalysisList', |
| | | components: {}, |
| | | data() { |
| | | return { |
| | | dates: [moment().subtract('month', 1), moment().subtract('month', 1)], |
| | | queryParam: { |
| | | pageSize: 10000, |
| | | pageNo: 1 |
| | | export default { |
| | | name: 'OEEAnalysisList', |
| | | components: {}, |
| | | data() { |
| | | return { |
| | | dates: [moment().subtract('month', 1), moment().subtract('month', 1)], |
| | | queryParam: { |
| | | pageSize: 10000, |
| | | pageNo: 1 |
| | | }, |
| | | queryParams: { |
| | | equipmentType: [], |
| | | driveType: [], |
| | | deviceLevel: [], |
| | | percentageLevel: [] |
| | | }, |
| | | queryParamEquip: {}, |
| | | queryParamPeople: {}, |
| | | url: { |
| | | list: '/mdc/mdcOverallEquipmentEfficiency/list', |
| | | queryEquipmentType: '/mdc/mdcEquipmentType/queryEquipmentType' |
| | | }, |
| | | columns: [ |
| | | { |
| | | title: '序号', |
| | | dataIndex: '', |
| | | key: 'rowIndex', |
| | | width: 60, |
| | | align: 'center', |
| | | customRender: function(t, r, index) { |
| | | return parseInt(index) + 1 |
| | | } |
| | | }, |
| | | queryParams: { |
| | | equipmentType: [], |
| | | driveType: [], |
| | | deviceLevel: [], |
| | | deviceCategory: [], |
| | | deviceImportanceLevel: [], |
| | | percentageLevel: [] |
| | | { |
| | | title: '车间', |
| | | align: 'center', |
| | | dataIndex: 'productionName', |
| | | width: 110 |
| | | }, |
| | | queryParamEquip: {}, |
| | | queryParamPeople: {}, |
| | | url: { |
| | | list: '/mdc/mdcOverallEquipmentEfficiency/list', |
| | | queryEquipmentType: '/mdc/mdcEquipmentType/queryEquipmentType' |
| | | { |
| | | title: '设备编号', |
| | | align: 'center', |
| | | dataIndex: 'equipmentId', |
| | | width: 120 |
| | | }, |
| | | columns: [ |
| | | { |
| | | title: '序号', |
| | | dataIndex: '', |
| | | key: 'rowIndex', |
| | | width: 60, |
| | | align: 'center', |
| | | customRender: function(t, r, index) { |
| | | return parseInt(index) + 1 |
| | | { |
| | | title: '设备名称', |
| | | align: 'center', |
| | | width: 120, |
| | | dataIndex: 'equipmentName' |
| | | }, |
| | | { |
| | | title: '设备型号', |
| | | align: 'center', |
| | | width: 120, |
| | | dataIndex: 'equipmentModel', |
| | | scopedSlots: { customRender: 'equipmentModel' } |
| | | }, |
| | | { |
| | | title: '日期', |
| | | align: 'center', |
| | | width: 100, |
| | | dataIndex: 'validDate' |
| | | }, |
| | | { |
| | | title: '班次', |
| | | align: 'center', |
| | | width: 100, |
| | | dataIndex: 'shift' |
| | | }, |
| | | { |
| | | title: '每班小时', |
| | | dataIndex: 'shiftTimeCount', |
| | | align: 'center', |
| | | width: 100 |
| | | }, |
| | | { |
| | | title: '加班时间(分钟)', |
| | | dataIndex: 'overtime', |
| | | align: 'center', |
| | | width: 100 |
| | | }, |
| | | { |
| | | title: '实际班产天数', |
| | | dataIndex: 'actualWorkDayCount', |
| | | align: 'center', |
| | | width: 100 |
| | | }, |
| | | { |
| | | title: '月度实际班产总时间(分钟)', |
| | | dataIndex: 'monthActualWorkDayTimeCount', |
| | | align: 'center', |
| | | width: 100 |
| | | }, |
| | | { |
| | | title: '非计划停机损失(分钟)(一个月)', |
| | | children: [ |
| | | { |
| | | title: '故障停机', |
| | | dataIndex: 'breakdownDownDuration', |
| | | align: 'center', |
| | | width: 100 |
| | | }, |
| | | { |
| | | title: '换型调试', |
| | | dataIndex: 'conversionDebugDuration', |
| | | align: 'center', |
| | | width: 100 |
| | | }, |
| | | { |
| | | title: '物料短缺', |
| | | dataIndex: 'materialShortageDuration', |
| | | align: 'center', |
| | | width: 100 |
| | | }, |
| | | { |
| | | title: '计划等任务', |
| | | dataIndex: 'plannedTaskDuration', |
| | | align: 'center', |
| | | width: 100 |
| | | }, |
| | | { |
| | | title: '检验', |
| | | dataIndex: 'inspectDuration', |
| | | align: 'center', |
| | | width: 100 |
| | | }, |
| | | { |
| | | title: '其他', |
| | | dataIndex: 'otherDuration', |
| | | align: 'center', |
| | | width: 100 |
| | | } |
| | | }, |
| | | { |
| | | title: '车间', |
| | | align: 'center', |
| | | dataIndex: 'productionName', |
| | | width: 110 |
| | | }, |
| | | { |
| | | title: '设备编号', |
| | | align: 'center', |
| | | dataIndex: 'equipmentId', |
| | | width: 120 |
| | | }, |
| | | { |
| | | title: '设备名称', |
| | | align: 'center', |
| | | width: 120, |
| | | dataIndex: 'equipmentName' |
| | | }, |
| | | { |
| | | title: '设备型号', |
| | | align: 'center', |
| | | width: 120, |
| | | dataIndex: 'equipmentModel', |
| | | scopedSlots: { customRender: 'equipmentModel' } |
| | | }, |
| | | { |
| | | title: '日期', |
| | | align: 'center', |
| | | width: 100, |
| | | dataIndex: 'validDate' |
| | | }, |
| | | { |
| | | title: '班次', |
| | | align: 'center', |
| | | width: 100, |
| | | dataIndex: 'shift' |
| | | }, |
| | | { |
| | | title: '每班小时', |
| | | dataIndex: 'shiftTimeCount', |
| | | align: 'center', |
| | | width: 100 |
| | | }, |
| | | { |
| | | title: '加班时间(分钟)', |
| | | dataIndex: 'overtime', |
| | | align: 'center', |
| | | width: 100 |
| | | }, |
| | | { |
| | | title: '实际班产天数', |
| | | dataIndex: 'actualWorkDayCount', |
| | | align: 'center', |
| | | width: 100 |
| | | }, |
| | | { |
| | | title: '月度实际班产总时间(分钟)', |
| | | dataIndex: 'monthActualWorkDayTimeCount', |
| | | align: 'center', |
| | | width: 100 |
| | | }, |
| | | { |
| | | title: '非计划停机损失(分钟)(一个月)', |
| | | children: [ |
| | | { |
| | | title: '故障停机', |
| | | dataIndex: 'breakdownDownDuration', |
| | | align: 'center', |
| | | width: 100 |
| | | }, |
| | | { |
| | | title: '换型调试', |
| | | dataIndex: 'conversionDebugDuration', |
| | | align: 'center', |
| | | width: 100 |
| | | }, |
| | | { |
| | | title: '物料短缺', |
| | | dataIndex: 'materialShortageDuration', |
| | | align: 'center', |
| | | width: 100 |
| | | }, |
| | | { |
| | | title: '计划等任务', |
| | | dataIndex: 'plannedTaskDuration', |
| | | align: 'center', |
| | | width: 100 |
| | | }, |
| | | { |
| | | title: '检验', |
| | | dataIndex: 'inspectDuration', |
| | | align: 'center', |
| | | width: 100 |
| | | }, |
| | | { |
| | | title: '其他', |
| | | dataIndex: 'otherDuration', |
| | | align: 'center', |
| | | width: 100 |
| | | } |
| | | ] |
| | | }, |
| | | { |
| | | title: '计划停机时间(分钟)(一个月)', |
| | | children: [ |
| | | { |
| | | title: '计划保养', |
| | | dataIndex: 'plannedMaintenanceDuration', |
| | | align: 'center', |
| | | width: 100 |
| | | }, |
| | | { |
| | | title: '会议/培训', |
| | | dataIndex: 'conferenceTrainingDuration', |
| | | align: 'center', |
| | | width: 100 |
| | | }, |
| | | { |
| | | title: '其他休息等', |
| | | dataIndex: 'otherRestDuration', |
| | | align: 'center', |
| | | width: 100 |
| | | }] |
| | | }, |
| | | { |
| | | title: '负荷时间(小时)', |
| | | dataIndex: 'loadTime', |
| | | align: 'center', |
| | | width: 100 |
| | | }, |
| | | { |
| | | title: '时间开动率', |
| | | dataIndex: 'timeActuationRate', |
| | | align: 'center', |
| | | width: 100, |
| | | customRender: text => text != 0 ? parseFloat((text * 100).toFixed(2)) + '%' : 0 |
| | | }, |
| | | // { |
| | | // title: '加工零件数(件)', |
| | | // dataIndex: 'processQuantity', |
| | | // align: 'center', |
| | | // width: 120 |
| | | // }, |
| | | // { |
| | | // title: '标准加工时间(分钟)', |
| | | // dataIndex: 'standardProcessDuration', |
| | | // align: 'center', |
| | | // width: 120 |
| | | // }, |
| | | { |
| | | title: '性能开动率', |
| | | dataIndex: 'performanceRate', |
| | | align: 'center', |
| | | width: 100, |
| | | customRender: text => text != 0 ? parseFloat((text * 100).toFixed(2)) + '%' : 0 |
| | | }, |
| | | { |
| | | title: '废品数', |
| | | dataIndex: 'unqualifiedQuantity', |
| | | align: 'center', |
| | | width: 100 |
| | | }, |
| | | { |
| | | title: '合格率', |
| | | dataIndex: 'passRate', |
| | | align: 'center', |
| | | width: 100, |
| | | customRender: text => text != 0 ? parseFloat((text * 100).toFixed(2)) + '%' : 0 |
| | | }, |
| | | { |
| | | title: '设备综合效率', |
| | | dataIndex: 'overallEquipmentEfficiency', |
| | | align: 'center', |
| | | width: 100, |
| | | customRender: text => text != 0 ? parseFloat((text * 100).toFixed(2)) + '%' : 0 |
| | | } |
| | | ], |
| | | dataSource: [], |
| | | driveTypeList: [], |
| | | equipmentTypeList: [], |
| | | device_level_list: [], |
| | | device_category_list: [], |
| | | percentage_level_list: [], |
| | | scrollY: 465, |
| | | tableLoading: false, |
| | | toggleSearchStatus: false |
| | | } |
| | | }, |
| | | props: { nodeTree: '', Type: '', nodePeople: '' }, |
| | | created() { |
| | | const { isEquipment, productionId } = this.$route.params |
| | | if (productionId) { |
| | | console.log('productionId', productionId) |
| | | console.log('isEquipment', isEquipment) |
| | | if (!isEquipment) this.queryParam.parentId = productionId |
| | | else this.queryParam.equipmentId = productionId |
| | | } |
| | | ] |
| | | }, |
| | | { |
| | | title: '计划停机时间(分钟)(一个月)', |
| | | children: [ |
| | | { |
| | | title: '计划保养', |
| | | dataIndex: 'plannedMaintenanceDuration', |
| | | align: 'center', |
| | | width: 100 |
| | | }, |
| | | { |
| | | title: '会议/培训', |
| | | dataIndex: 'conferenceTrainingDuration', |
| | | align: 'center', |
| | | width: 100 |
| | | }, |
| | | { |
| | | title: '其他休息等', |
| | | dataIndex: 'otherRestDuration', |
| | | align: 'center', |
| | | width: 100 |
| | | }] |
| | | }, |
| | | { |
| | | title: '负荷时间(小时)', |
| | | dataIndex: 'loadTime', |
| | | align: 'center', |
| | | width: 100 |
| | | }, |
| | | { |
| | | title: '时间开动率', |
| | | dataIndex: 'timeActuationRate', |
| | | align: 'center', |
| | | width: 100, |
| | | customRender: text => text != 0 ? parseFloat((text * 100).toFixed(2)) + '%' : 0 |
| | | }, |
| | | // { |
| | | // title: '加工零件数(件)', |
| | | // dataIndex: 'processQuantity', |
| | | // align: 'center', |
| | | // width: 120 |
| | | // }, |
| | | // { |
| | | // title: '标准加工时间(分钟)', |
| | | // dataIndex: 'standardProcessDuration', |
| | | // align: 'center', |
| | | // width: 120 |
| | | // }, |
| | | { |
| | | title: '性能开动率', |
| | | dataIndex: 'performanceRate', |
| | | align: 'center', |
| | | width: 100, |
| | | customRender: text => text != 0 ? parseFloat((text * 100).toFixed(2)) + '%' : 0 |
| | | }, |
| | | { |
| | | title: '废品数', |
| | | dataIndex: 'unqualifiedQuantity', |
| | | align: 'center', |
| | | width: 100 |
| | | }, |
| | | { |
| | | title: '合格率', |
| | | dataIndex: 'passRate', |
| | | align: 'center', |
| | | width: 100, |
| | | customRender: text => text != 0 ? parseFloat((text * 100).toFixed(2)) + '%' : 0 |
| | | }, |
| | | { |
| | | title: '设备综合效率', |
| | | dataIndex: 'overallEquipmentEfficiency', |
| | | align: 'center', |
| | | width: 100, |
| | | customRender: text => text != 0 ? parseFloat((text * 100).toFixed(2)) + '%' : 0 |
| | | } |
| | | ], |
| | | dataSource: [], |
| | | driveTypeList: [], |
| | | equipmentTypeList: [], |
| | | device_level_list: [], |
| | | device_importance_level_list: [], |
| | | percentage_level_list: [], |
| | | scrollY: 465, |
| | | tableLoading: false, |
| | | toggleSearchStatus: false |
| | | } |
| | | }, |
| | | props: { nodeTree: '', Type: '', nodePeople: '' }, |
| | | created() { |
| | | const { isEquipment, productionId } = this.$route.params |
| | | if (productionId) { |
| | | console.log('productionId', productionId) |
| | | console.log('isEquipment', isEquipment) |
| | | if (!isEquipment) this.queryParam.parentId = productionId |
| | | else this.queryParam.equipmentId = productionId |
| | | } |
| | | |
| | | this.queryParam.startTime = moment(this.dates[0]).format('YYYY-MM') |
| | | this.queryParam.endTime = moment(this.dates[1]).format('YYYY-MM') |
| | | this.queryParam.typeTree = '1' |
| | | this.loadData() |
| | | this.getDriveTypeByApi() |
| | | this.queryGroup() |
| | | this.initDictData('device_level') |
| | | this.initDictData('device_category') |
| | | this.initDictData('device_importance_level') |
| | | this.initDictData('percentage_level') |
| | | this.queryParam.startTime = moment(this.dates[0]).format('YYYY-MM') |
| | | this.queryParam.endTime = moment(this.dates[1]).format('YYYY-MM') |
| | | this.queryParam.typeTree = '1' |
| | | this.loadData() |
| | | this.getDriveTypeByApi() |
| | | this.queryGroup() |
| | | this.initDictData('device_level') |
| | | this.initDictData('device_category') |
| | | this.initDictData('device_importance_level') |
| | | this.initDictData('percentage_level') |
| | | }, |
| | | mounted() { |
| | | window.addEventListener('resize', this.handleWindowResize) |
| | | // this.handleWindowResize() |
| | | }, |
| | | beforeDestroy() { |
| | | window.removeEventListener('resize', this.handleWindowResize) |
| | | }, |
| | | watch: { |
| | | Type(valmath) { |
| | | this.dataList = [] |
| | | this.queryParam.typeTree = valmath |
| | | }, |
| | | mounted() { |
| | | window.addEventListener('resize', this.handleWindowResize) |
| | | // this.handleWindowResize() |
| | | }, |
| | | beforeDestroy() { |
| | | window.removeEventListener('resize', this.handleWindowResize) |
| | | }, |
| | | watch: { |
| | | Type(valmath) { |
| | | this.dataList = [] |
| | | this.queryParam.typeTree = valmath |
| | | }, |
| | | nodeTree(val) { //监听currSelected 变化,将变化后的数值传递给 getCurrSelected 事件 |
| | | console.log(val) |
| | | 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() |
| | | nodeTree(val) { //监听currSelected 变化,将变化后的数值传递给 getCurrSelected 事件 |
| | | console.log(val) |
| | | 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 = '' |
| | | } |
| | | }, |
| | | 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() |
| | | } |
| | | this.searchQuery() |
| | | } |
| | | }, |
| | | methods: { |
| | | initDictData(dictCode) { |
| | | // //优先从缓存中读取字典配置 |
| | | if (getDictItemsFromCache(dictCode)) { |
| | | this[dictCode + '_list'] = getDictItemsFromCache(dictCode) |
| | | 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() |
| | | } |
| | | } |
| | | }, |
| | | methods: { |
| | | initDictData(dictCode) { |
| | | // //优先从缓存中读取字典配置 |
| | | if (getDictItemsFromCache(dictCode)) { |
| | | this[dictCode + '_list'] = getDictItemsFromCache(dictCode) |
| | | return |
| | | } |
| | | //根据字典Code, 初始化字典数组 |
| | | ajaxGetDictItems(dictCode, null).then((res) => { |
| | | if (res.success) { |
| | | this[dictCode + '_list'] = res.result |
| | | return |
| | | } |
| | | //根据字典Code, 初始化字典数组 |
| | | ajaxGetDictItems(dictCode, null).then((res) => { |
| | | if (res.success) { |
| | | this[dictCode + '_list'] = res.result |
| | | return |
| | | } |
| | | }) |
| | | }, |
| | | selectChange(value, key) { |
| | | this.queryParams[key] = value |
| | | }, |
| | | dateParamChange(value) { |
| | | console.log('dateParamChangeValue', value) |
| | | this.dates = value |
| | | this.queryParam.startTime = moment(this.dates[0]).format('YYYY-MM') |
| | | this.queryParam.endTime = moment(this.dates[1]).format('YYYY-MM') |
| | | }, |
| | | }) |
| | | }, |
| | | selectChange(value, key) { |
| | | this.queryParams[key] = value |
| | | }, |
| | | dateParamChange(value) { |
| | | console.log('dateParamChangeValue', value) |
| | | this.dates = value |
| | | this.queryParam.startTime = moment(this.dates[0]).format('YYYY-MM') |
| | | this.queryParam.endTime = moment(this.dates[1]).format('YYYY-MM') |
| | | }, |
| | | |
| | | handleDateChange(value) { |
| | | console.log('handleDateChangeValue', value) |
| | | if (!value.length) { |
| | | delete this.queryParam.startTime |
| | | delete this.queryParam.endTime |
| | | this.dates = [] |
| | | } |
| | | }, |
| | | |
| | | exportExcel() { |
| | | $('#EfficiencyShift').table2excel({ |
| | | exclude: '.noExl', |
| | | name: 'Excel Document Name', |
| | | filename: '设备综合效率分析', |
| | | exclude_img: true, |
| | | fileext: '.xls', |
| | | exclude_links: true, |
| | | exclude_inputs: true |
| | | }) |
| | | }, |
| | | |
| | | 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 = '' |
| | | } |
| | | Object.keys(this.queryParams).forEach(item => { |
| | | if (Array.isArray(this.queryParams[item])) { |
| | | // 此处为保证接口参数不多余,可省略 |
| | | this.queryParam[item] = this.queryParams[item].join() |
| | | if (this.queryParams[item].length === 0) delete this.queryParam[item] |
| | | console.log('this.queryParam', this.queryParam) |
| | | } |
| | | }) |
| | | this.loadData() |
| | | }, |
| | | |
| | | searchReset() { |
| | | this.queryParam = { |
| | | pageSize: 10000, |
| | | pageNo: 1, |
| | | typeTree: 1 |
| | | } |
| | | this.queryParams = { |
| | | equipmentType: [], |
| | | driveType: [], |
| | | deviceLevel: [], |
| | | deviceCategory: [] |
| | | } |
| | | handleDateChange(value) { |
| | | console.log('handleDateChangeValue', value) |
| | | if (!value.length) { |
| | | delete this.queryParam.startTime |
| | | delete this.queryParam.endTime |
| | | this.dates = [] |
| | | this.loadData() |
| | | }, |
| | | } |
| | | }, |
| | | |
| | | /** |
| | | * 调用接口获取控制系统类型 |
| | | */ |
| | | getDriveTypeByApi() { |
| | | api.getDriveTypeApi().then((res) => { |
| | | if (res.success) this.driveTypeList = res.result |
| | | }) |
| | | }, |
| | | exportExcel() { |
| | | $('#EfficiencyShift').table2excel({ |
| | | exclude: '.noExl', |
| | | name: 'Excel Document Name', |
| | | filename: '设备综合效率分析', |
| | | exclude_img: true, |
| | | fileext: '.xls', |
| | | exclude_links: true, |
| | | exclude_inputs: true |
| | | }) |
| | | }, |
| | | |
| | | queryGroup() { |
| | | getAction(this.url.queryEquipmentType).then(res => { |
| | | if (res.success) { |
| | | this.equipmentTypeList = res.result.map(item => { |
| | | return { |
| | | label: item.equipmentTypeName, |
| | | value: item.equipmentTypeName |
| | | } |
| | | }) |
| | | } else { |
| | | this.$notification.warning({ |
| | | message: '消息', |
| | | description: res.message |
| | | }) |
| | | } |
| | | }) |
| | | }, |
| | | 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 = '' |
| | | } |
| | | Object.keys(this.queryParams).forEach(item => { |
| | | if (Array.isArray(this.queryParams[item])) { |
| | | // 此处为保证接口参数不多余,可省略 |
| | | this.queryParam[item] = this.queryParams[item].join() |
| | | if (this.queryParams[item].length === 0) delete this.queryParam[item] |
| | | } |
| | | }) |
| | | this.loadData() |
| | | }, |
| | | |
| | | loadData() { |
| | | this.tableLoading = true |
| | | getAction(this.url.list, this.queryParam) |
| | | .then(res => { |
| | | if (res.success && res.result) { |
| | | this.dataSource = res.result |
| | | this.tableLoading = false |
| | | searchReset() { |
| | | this.queryParam = { |
| | | pageSize: 10000, |
| | | pageNo: 1, |
| | | typeTree: 1 |
| | | } |
| | | this.queryParams = { |
| | | equipmentType: [], |
| | | driveType: [], |
| | | deviceLevel: [] |
| | | } |
| | | this.dates = [] |
| | | this.loadData() |
| | | }, |
| | | |
| | | /** |
| | | * 调用接口获取控制系统类型 |
| | | */ |
| | | getDriveTypeByApi() { |
| | | api.getDriveTypeApi().then((res) => { |
| | | if (res.success) this.driveTypeList = res.result |
| | | }) |
| | | }, |
| | | |
| | | queryGroup() { |
| | | getAction(this.url.queryEquipmentType).then(res => { |
| | | if (res.success) { |
| | | this.equipmentTypeList = res.result.map(item => { |
| | | return { |
| | | label: item.equipmentTypeName, |
| | | value: item.equipmentTypeName |
| | | } |
| | | }) |
| | | .finally(() => { |
| | | this.tableLoading = false |
| | | this.handleWindowResize() |
| | | } else { |
| | | this.$notification.warning({ |
| | | message: '消息', |
| | | description: res.message |
| | | }) |
| | | }, |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | /** |
| | | * 分页器页数发生改变时触发 |
| | | * @param page 改变后页数 |
| | | * @param pageSize 改变后每页展示数据条数 |
| | | */ |
| | | handlePageNoChange(page, pageSize) { |
| | | this.queryParam.pageNo = page |
| | | this.loadData() |
| | | }, |
| | | loadData() { |
| | | this.tableLoading = true |
| | | getAction(this.url.list, this.queryParam) |
| | | .then(res => { |
| | | if (res.success && res.result) { |
| | | this.dataSource = res.result |
| | | this.tableLoading = false |
| | | } |
| | | }) |
| | | .finally(() => { |
| | | this.tableLoading = false |
| | | this.handleWindowResize() |
| | | }) |
| | | }, |
| | | |
| | | /** |
| | | * 分页器每页展示数据条数发生改变时触发 |
| | | * @param current 改变后页数 |
| | | * @param size 改变后每页展示数据条数 |
| | | */ |
| | | handlePageSizeChange(current, size) { |
| | | this.queryParam.pageSize = size |
| | | this.loadData() |
| | | }, |
| | | |
| | | onCellChange(key, dataIndex, value) { |
| | | console.log('触发onCellChange', key, dataIndex, value) |
| | | }, |
| | | |
| | | /** |
| | | * 当浏览器可视窗口尺寸发生改变时触发 |
| | | */ |
| | | handleWindowResize() { |
| | | const devicePixelRatio = window.devicePixelRatio // 浏览器缩放比 |
| | | console.log('devicePixelRatio', devicePixelRatio) |
| | | if (devicePixelRatio < 1) return // 缩放比小于1时不进行高度重新设置,因为scrollY变大后表格超出部分会被隐藏导致滚动条不可见 |
| | | const clientHeight = document.body.clientHeight || document.documentElement.clientHeight// 浏览器可视区域高度 |
| | | console.log('clientHeight', clientHeight) |
| | | const containerTopToClientTopHeight = document.getElementById('EfficiencyShift').getBoundingClientRect().top // 表格容器顶部到浏览器可视区域顶部的间距 |
| | | console.log('containerTopToClientTopHeight', containerTopToClientTopHeight) |
| | | // const tableHeadHeight = +window.getComputedStyle(document.querySelector('.ant-table-thead th')).height.slice(0, -2) // 表格表头高度 |
| | | const tableHeadHeight = document.querySelector('.ant-table-thead th').offsetHeight // 表格表头高度 |
| | | console.log('tableHeadHeight', tableHeadHeight) |
| | | // this.scrollY = clientHeight - containerTopToClientTopHeight - tableHeadHeight |
| | | const tableSuitableScrollY = clientHeight - containerTopToClientTopHeight - tableHeadHeight // 表格垂直滚动条合适高度(表格水平滚动条刚好在可视区域最下方) |
| | | // const tableSuitableScrollY = 600 |
| | | console.log('tableSuitableScrollY', tableSuitableScrollY) |
| | | const tableContainerHeight = document.getElementById('EfficiencyShift').offsetHeight |
| | | console.log('tableContainerHeight', tableContainerHeight) |
| | | const tableMaxScrollY = tableContainerHeight - tableHeadHeight // 表格垂直滚动条最大高度(若超出则水平滚动条被遮挡) |
| | | console.log('tableMaxScrollY', tableMaxScrollY) |
| | | if (tableSuitableScrollY && tableSuitableScrollY < tableMaxScrollY) this.scrollY = tableSuitableScrollY |
| | | else this.scrollY = tableMaxScrollY |
| | | console.log('scrollY', this.scrollY) |
| | | } |
| | | /** |
| | | * 当浏览器可视窗口尺寸发生改变时触发 |
| | | */ |
| | | handleWindowResize() { |
| | | const devicePixelRatio = window.devicePixelRatio // 浏览器缩放比 |
| | | console.log('devicePixelRatio', devicePixelRatio) |
| | | if (devicePixelRatio < 1) return // 缩放比小于1时不进行高度重新设置,因为scrollY变大后表格超出部分会被隐藏导致滚动条不可见 |
| | | const clientHeight = document.body.clientHeight || document.documentElement.clientHeight// 浏览器可视区域高度 |
| | | console.log('clientHeight', clientHeight) |
| | | const containerTopToClientTopHeight = document.getElementById('EfficiencyShift').getBoundingClientRect().top // 表格容器顶部到浏览器可视区域顶部的间距 |
| | | console.log('containerTopToClientTopHeight', containerTopToClientTopHeight) |
| | | // const tableHeadHeight = +window.getComputedStyle(document.querySelector('.ant-table-thead th')).height.slice(0, -2) // 表格表头高度 |
| | | const tableHeadHeight = document.querySelector('.ant-table-thead th').offsetHeight // 表格表头高度 |
| | | console.log('tableHeadHeight', tableHeadHeight) |
| | | // this.scrollY = clientHeight - containerTopToClientTopHeight - tableHeadHeight |
| | | const tableSuitableScrollY = clientHeight - containerTopToClientTopHeight - tableHeadHeight // 表格垂直滚动条合适高度(表格水平滚动条刚好在可视区域最下方) |
| | | // const tableSuitableScrollY = 600 |
| | | console.log('tableSuitableScrollY', tableSuitableScrollY) |
| | | const tableContainerHeight = document.getElementById('EfficiencyShift').offsetHeight |
| | | console.log('tableContainerHeight', tableContainerHeight) |
| | | const tableMaxScrollY = tableContainerHeight - tableHeadHeight // 表格垂直滚动条最大高度(若超出则水平滚动条被遮挡) |
| | | console.log('tableMaxScrollY', tableMaxScrollY) |
| | | if (tableSuitableScrollY && tableSuitableScrollY < tableMaxScrollY) this.scrollY = tableSuitableScrollY |
| | | else this.scrollY = tableMaxScrollY |
| | | console.log('scrollY', this.scrollY) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | <style scoped lang="less"> |
| | | .pagination { |
| | | display: flex; |
| | | justify-content: end; |
| | | margin: 20px 0; |
| | | } |
| | | .pagination { |
| | | display: flex; |
| | | justify-content: end; |
| | | margin: 20px 0; |
| | | } |
| | | |
| | | .device_list { |
| | | overflow: hidden; |
| | | display: flex; |
| | | flex-direction: column; |
| | | } |
| | | |
| | | @media screen and (min-width: 1920px) { |
| | | .device_list { |
| | | overflow: hidden; |
| | | display: flex; |
| | | flex-direction: column; |
| | | height: 811px !important; |
| | | } |
| | | } |
| | | |
| | | @media screen and (min-width: 1920px) { |
| | | .device_list { |
| | | height: 811px !important; |
| | | } |
| | | @media screen and (min-width: 1680px) and (max-width: 1920px) { |
| | | .device_list { |
| | | height: 811px !important; |
| | | } |
| | | } |
| | | |
| | | @media screen and (min-width: 1680px) and (max-width: 1920px) { |
| | | .device_list { |
| | | height: 811px !important; |
| | | } |
| | | @media screen and (min-width: 1400px) and (max-width: 1680px) { |
| | | .device_list { |
| | | height: 663px !important; |
| | | } |
| | | } |
| | | |
| | | @media screen and (min-width: 1400px) and (max-width: 1680px) { |
| | | .device_list { |
| | | height: 663px !important; |
| | | } |
| | | @media screen and (min-width: 1280px) and (max-width: 1400px) { |
| | | .device_list { |
| | | height: 564px !important; |
| | | } |
| | | } |
| | | |
| | | @media screen and (min-width: 1280px) and (max-width: 1400px) { |
| | | .device_list { |
| | | height: 564px !important; |
| | | } |
| | | @media screen and (max-width: 1280px) { |
| | | .device_list { |
| | | height: 564px !important; |
| | | } |
| | | } |
| | | |
| | | @media screen and (max-width: 1280px) { |
| | | .device_list { |
| | | height: 564px !important; |
| | | } |
| | | /deep/ .ant-table-body { |
| | | &::-webkit-scrollbar { |
| | | height: 12px; |
| | | } |
| | | |
| | | /deep/ .ant-table-body { |
| | | &::-webkit-scrollbar { |
| | | height: 12px; |
| | | } |
| | | } |
| | | } |
| | | |
| | | </style> |