From c3a4f841d5499b74e9153fce421cebd1fb4ac72d Mon Sep 17 00:00:00 2001 From: zhaowei <zhaowei> Date: 星期二, 15 七月 2025 10:55:52 +0800 Subject: [PATCH] 1、mdc设备多选输入框优化新增点击输入框同样触发查询按钮弹出抽屉或弹窗 2、解决进入过产品结构树页面后再进入设备日志页面后设备状态分布图样式变形问题以及优化组件代码 --- src/views/mdc/base/modules/efficiencyPOReport/EfficiencyPOList.vue | 1051 ++++++++++++++++++++++++++++--------------------------- src/views/mdc/base/modules/efficiencyReport/EfficiencyList.vue | 18 src/views/mdc/base/modules/efficiencyShiftReport/EfficiencyShiftList.vue | 16 3 files changed, 551 insertions(+), 534 deletions(-) diff --git a/src/views/mdc/base/modules/efficiencyPOReport/EfficiencyPOList.vue b/src/views/mdc/base/modules/efficiencyPOReport/EfficiencyPOList.vue index 8253a9b..74d2f8a 100644 --- a/src/views/mdc/base/modules/efficiencyPOReport/EfficiencyPOList.vue +++ b/src/views/mdc/base/modules/efficiencyPOReport/EfficiencyPOList.vue @@ -39,7 +39,8 @@ </a-col> <a-col :md="4" :sm="4"> <a-form-item label="鏃堕棿"> - <a-range-picker @change="dateParamChange" :disabledDate="disabledDate" format="YYYYMMDD" v-model="dates" :allowClear="false"/> + <a-range-picker @change="dateParamChange" :disabledDate="disabledDate" format="YYYYMMDD" v-model="dates" + :allowClear="false"/> </a-form-item> </a-col> <a-col :md="5" :sm="5" :xs="5"> @@ -105,17 +106,23 @@ </a-form> </div> <a-spin :spinning="spinning"> - <div class="container" id="EfficiencyPO" style="margin-top: 20px;" > + <div class="container" id="EfficiencyPO" style="margin-top: 20px;"> <div class="table2"> - <table class="dataContent table" border="1" cellspacing="0" cellpadding="0" style="white-space: nowrap" v-if="dataList.length>0"> + <table class="dataContent table" border="1" cellspacing="0" cellpadding="0" style="white-space: nowrap" + v-if="dataList.length>0"> <thead> <tr class="thead fixed equipname"> - <th class="thgu dong1 name" rowspan="2" style="min-width: 50px; max-width: 50px;width: 50px;height: 66px">鍏徃</th> - <th class="thgu dong2 name" rowspan="2" style="min-width: 50px; max-width: 50px;width: 50px;">杞﹂棿</th> - <th class="thgu dong3 name" rowspan="2" style="min-width: 50px; max-width: 50px;width: 50px;">宸ユ</th> - <th class="thgu dong4 name" rowspan="2" style="min-width: 100px; max-width: 100px;width: 100px;">璁惧缂栧彿</th> - <th class="thgu dong5 name" rowspan="2" style="min-width: 162px; max-width: 162px;width: 162px;">璁惧鍚嶇О</th> - <th class="thgu dong6 name" rowspan="2" style="min-width: 100px; max-width: 100px;width: 100px;">璁惧绫诲瀷</th> + <th class="thgu dong1 name" rowspan="2" + style="min-width: 50px; max-width: 50px;width: 50px;height: 66px">鍏徃 + </th> + <th class="thgu dong2 name" rowspan="2" style="min-width: 50px; max-width: 50px;width: 50px;">杞﹂棿</th> + <th class="thgu dong3 name" rowspan="2" style="min-width: 50px; max-width: 50px;width: 50px;">宸ユ</th> + <th class="thgu dong4 name" rowspan="2" style="min-width: 100px; max-width: 100px;width: 100px;">璁惧缂栧彿 + </th> + <th class="thgu dong5 name" rowspan="2" style="min-width: 162px; max-width: 162px;width: 162px;">璁惧鍚嶇О + </th> + <th class="thgu dong6 name" rowspan="2" style="min-width: 100px; max-width: 100px;width: 100px;">璁惧绫诲瀷 + </th> <!--<th rowspan="2">缁勫埆</th>--> <template v-for="(tableHead, index) in tableHeads"> <th class="timeth" :colspan="checkedList.length">{{tableHead}}</th> @@ -135,44 +142,51 @@ <tbody> <tr class="mathData" v-for="(item, index) in dataList"> <template v-if="item.level1!=='鍚堣'&&item.level1!=='骞冲潎鍊�'"> - <td class="tdgu kaitou" :rowspan="item.level1span" :class="{hidden: item.level1dis,noExl:item.level1dis}" v-show="!item.level1dis"> + <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"> + <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"> + <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> + <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> </template> <template v-else> <td colspan="6" class="tdgu kaitou">{{item.level1}}</td> </template> <template v-for="(tableHead, index) in item.dataList"> - <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('lyl') > -1">{{tableHead.startRate | numFilter}}</td> - <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('kjl') > -1"> + <td :style="{background:tableHead.color,minWidth:'100px' }" v-if="checkedList.indexOf('lyl') > -1"> + {{tableHead.startRate | numFilter}} + </td> + <td :style="{background:tableHead.color,minWidth:'100px' }" v-if="checkedList.indexOf('kjl') > -1"> {{tableHead.openRate | numFilter}} </td> - <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('kjsj') > -1"> + <td :style="{background:tableHead.color,minWidth:'110px' }" v-if="checkedList.indexOf('kjsj') > -1"> {{tableHead.openLong | getFormattedTime}} </td> - <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('jgsj') > -1"> + <td :style="{background:tableHead.color ,minWidth:'110px'}" v-if="checkedList.indexOf('jgsj') > -1"> {{tableHead.processLong | getFormattedTime}} </td> - <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('djsj') > -1"> + <td :style="{background:tableHead.color,minWidth:'110px' }" v-if="checkedList.indexOf('djsj') > -1"> {{tableHead.waitLong | getFormattedTime}} </td> - <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('gjsj') > -1"> + <td :style="{background:tableHead.color,minWidth:'110px' }" v-if="checkedList.indexOf('gjsj') > -1"> {{tableHead.closeLong | getFormattedTime}} </td> </template> @@ -187,541 +201,540 @@ </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 { putAction, getAction } from '@/api/manage' + import $ from 'jquery' + import '@/components/table2excel/table2excel' + import { ajaxGetDictItems, getDictItemsFromCache, duplicateCheck } from '@/api/api' + import api from '@/api/mdc' -export default { - name: 'EfficiencyPOList', - components: {}, - data() { - return { - typeTree:"", - typeParent:1, - typeEquipment:1, - dates: [], - equipmentTypeList:[], - driveTypeList:[], - device_level_list: [], - device_category_list: [], - queryParam: {}, - queryParams: { - equipmentType: [], - driveType: [], - deviceLevel: [], - deviceCategory: [] - }, - queryParamEquip:{}, - queryParamPeople:{}, - identifying: [], - efficiencyOptions: [ - { label: '寮�鍔ㄧ巼', value: 'lyl' }, - { label: '寮�鏈虹巼', value: 'kjl' }, - { label: '寮�鏈烘椂闂�', value: 'kjsj' }, - { label: '鍔犲伐鏃堕棿', value: 'jgsj' }, - { label: '寰呮満鏃堕棿', value: 'djsj' }, - { label: '鍏虫満鏃堕棿', value: 'gjsj' } - ], - checkedList: ['lyl'], - dataList: [], - url: { - list: '/mdc/efficiencyReport/efficiencyPOList', - listByType: '/mdc/MdcUtilizationRate/getByType', - queryEquipmentType: '/mdc/mdcEquipmentType/queryEquipmentType' - }, - tableHeads: [], - spinning:false - } - }, - props: { nodeTree: '', Type:'',nodePeople: ''}, - created() { - this.showIdentifying() - this.dates = [moment().subtract('days', 8), moment().subtract('days', 1)] - this.queryParam.startTime = moment(this.dates[0]).format('YYYYMMDD') - this.queryParam.endTime = moment(this.dates[1]).format('YYYYMMDD') - this.queryParam.typeTree = "1" - this.loadData() - this.queryGroup() - this.getDriveTypeByApi() - this.initDictData('device_level') - this.initDictData('device_category') - }, - mounted() { - window.addEventListener('resize', this.handleWindowResize) - this.handleWindowResize() - }, - 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() + export default { + name: 'EfficiencyPOList', + components: {}, + data() { + return { + typeTree: '', + typeParent: 1, + typeEquipment: 1, + dates: [], + equipmentTypeList: [], + driveTypeList: [], + device_level_list: [], + device_category_list: [], + queryParam: {}, + queryParams: { + equipmentType: [], + driveType: [], + deviceLevel: [], + deviceCategory: [] + }, + queryParamEquip: {}, + queryParamPeople: {}, + identifying: [], + efficiencyOptions: [ + { label: '寮�鍔ㄧ巼', value: 'lyl' }, + { label: '寮�鏈虹巼', value: 'kjl' }, + { label: '寮�鏈烘椂闂�', value: 'kjsj' }, + { label: '鍔犲伐鏃堕棿', value: 'jgsj' }, + { label: '寰呮満鏃堕棿', value: 'djsj' }, + { label: '鍏虫満鏃堕棿', value: 'gjsj' } + ], + checkedList: ['lyl'], + dataList: [], + url: { + list: '/mdc/efficiencyReport/efficiencyPOList', + listByType: '/mdc/MdcUtilizationRate/getByType', + queryEquipmentType: '/mdc/mdcEquipmentType/queryEquipmentType' + }, + tableHeads: [], + spinning: false } }, - 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' - } - }, - - /** - * 鏍煎紡鍖栨椂闂� - * @param seconds 绉掓暟 - * @returns '' 鏍煎紡鍖栧悗鏃堕棿瀛楃涓� - */ - getFormattedTime(seconds) { - if (seconds) { - return parseFloat((seconds / 3600).toFixed(2)) - } else { - return '0' - } - }, - }, - 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 - } - }) - }, - selectChange(value, key) { - this.queryParams[key] = value - }, - checkSameData(dataList){ - let cache = {}; //瀛樺偍鐨勬槸閿槸kclx 鐨勫�硷紝鍊兼槸kclx 鍦╥ndeces涓暟缁勭殑涓嬫爣 - let indices = []; //鏁扮粍涓瘡涓�涓�兼槸涓�涓暟缁勶紝鏁扮粍涓殑姣忎竴涓厓绱犳槸鍘熸暟缁勪腑鐩稿悓kclx鐨勪笅鏍� - dataList.map((item,index)=>{ - let level1 = item.level1; - let _index = cache[level1]; - if(_index!==undefined){ - indices[_index].push(index) - }else{ - cache[level1] = indices.length - indices.push([index]) - } - }) - let result = []; - indices.map((item)=>{ - item.map((index)=>{ - result.push(dataList[index]) - }) - }) - this.dataList = result - }, - checkSameData1(dataList){ - let cache = {}; //瀛樺偍鐨勬槸閿槸kclx 鐨勫�硷紝鍊兼槸kclx 鍦╥ndeces涓暟缁勭殑涓嬫爣 - let indices = []; //鏁扮粍涓瘡涓�涓�兼槸涓�涓暟缁勶紝鏁扮粍涓殑姣忎竴涓厓绱犳槸鍘熸暟缁勪腑鐩稿悓kclx鐨勪笅鏍� - dataList.map((item,index)=>{ - let level2 = item.level2; - let _index = cache[level2]; - if(_index!==undefined){ - indices[_index].push(index) - }else{ - cache[level2] = indices.length - indices.push([index]) - } - }) - let result = []; - indices.map((item)=>{ - item.map((index)=>{ - result.push(dataList[index]) - }) - }) - this.dataList = result - }, - checkSameData2(dataList){ - let cache = {}; //瀛樺偍鐨勬槸閿槸kclx 鐨勫�硷紝鍊兼槸kclx 鍦╥ndeces涓暟缁勭殑涓嬫爣 - let indices = []; //鏁扮粍涓瘡涓�涓�兼槸涓�涓暟缁勶紝鏁扮粍涓殑姣忎竴涓厓绱犳槸鍘熸暟缁勪腑鐩稿悓kclx鐨勪笅鏍� - dataList.map((item,index)=>{ - let level3 = item.level3; - let _index = cache[level3]; - if(_index!==undefined){ - indices[_index].push(index) - }else{ - cache[level3] = indices.length - indices.push([index]) - } - }) - let result = []; - indices.map((item)=>{ - item.map((index)=>{ - result.push(dataList[index]) - }) - }) - this.dataList = result - }, - // 鍚堝苟 - combineCell() { - console.log(this.dataList) - let list =this.dataList; - for (let field in list[0]) { - var k = 0; - while (k < list.length) { - list[k][field + 'span'] = 1; - list[k][field + 'dis'] = false; - for (var i = k + 1; i <= list.length - 1; i++) { - if (list[k][field] == list[i][field] && list[k][field] != '') { - list[k][field + 'span']++; - list[k][field + 'dis'] = false; - list[i][field + 'span'] = 1; - list[i][field + 'dis'] = true; - } else { - break; - } - } - k = i; - } - } - return list; - }, - disabledDate(current){ - //Can not slect days before today and today - return current && current > moment().subtract('days', 1); - }, - initDeviceType(deviceList) { - let dictCode = 'mdc_equipmentType' - let items = [] - items = getDictItemsFromCache(dictCode) - if (deviceList && items.length > 0) { - for (let a = 0; a < deviceList.length; a++) { - if (items && items.length > 0) { - for (let i = 0; i < items.length; i++) { - if (deviceList[a].equipmentType == items[i].value) { - deviceList[a].equipmentType = items[i].title - } - } - } else { - ajaxGetDictItems(dictCode, null).then((res) => { - if (res.success) { - let items = res.result - for (let i = 0; i < items.length; i++) { - if (deviceList[a].equipmentType == items[i].value) { - deviceList[a].equipmentType = items[i].title - } - } - } - }) - } - } - } - }, - exportExcel() { - $("#EfficiencyPO").table2excel({ - exclude: ".noExl", - name: "Excel Document Name", - filename: "璁惧寮�鍔ㄧ巼", - exclude_img: true, - fileext: ".xls", - exclude_links: true, - exclude_inputs: true - }); - }, - showIdentifying() { - getAction(this.url.listByType, { type: 'kdl' }).then(res => { - if (res.success) { - this.identifying = res.result - } - }) - }, - dateParamChange(v1, v2) { - this.queryParam.startTime = v2[0] - this.queryParam.endTime = v2[1] - // 鐐瑰嚮鏃堕棿閫夋嫨鍣ㄧ殑娓呯┖鎸夐挳鏃朵細瑙﹀彂姝ゅ垽鏂�(鐐瑰嚮閲嶇疆鎸夐挳涓嶄細瑙﹀彂)锛屽疄鐜伴噸缃垪琛ㄥ姛鑳斤紝鍒囧疄鏀瑰彉鍒楄〃鏄剧ず鏁堟灉 - if(!this.queryParam.startTime&&!this.queryParam.endTime)this.searchReset() - }, - efficiencyOptionsOnChange(checkedList) { - // let index = checkedList.indexOf('lyl') - // if (index < 0) { - // // this.$message.warn('涓嶈兘鍙栨秷鏌ヨ鍒╃敤鐜�') - // this.$notification.warning({ - // message:'娑堟伅', - // description:"涓嶈兘鍙栨秷鏌ヨ鍒╃敤鐜�" - // }) - // return false - // } - this.checkedList = checkedList - }, - 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 => { - this.queryParam[item] = this.queryParams[item].join() - // 姝ゅ涓轰繚璇佹帴鍙e弬鏁颁笉澶氫綑锛屽彲鐪佺暐 - if (this.queryParams[item].length === 0) delete this.queryParam[item] - }) - this.loadData() - }, - searchReset() { - this.typeTree = this.queryParam.typeTree - this.typeParent = this.queryParam.parentId - this.typeEquipment = this.queryParam.equipmentId - this.queryParam = {} - this.queryParam.typeTree = this.typeTree - this.queryParam.parentId = this.typeParent - this.queryParam.equipmentId = this.typeEquipment + props: { nodeTree: '', Type: '', nodePeople: '' }, + created() { + this.showIdentifying() this.dates = [moment().subtract('days', 8), moment().subtract('days', 1)] this.queryParam.startTime = moment(this.dates[0]).format('YYYYMMDD') this.queryParam.endTime = moment(this.dates[1]).format('YYYYMMDD') - // this.ipagination.current = 1 - this.queryParams = { - equipmentType: [], - driveType: [], - deviceLevel: [], - deviceCategory: [] - } - this.loadData(); + this.queryParam.typeTree = '1' + this.loadData() + this.queryGroup() + this.getDriveTypeByApi() + this.initDictData('device_level') + this.initDictData('device_category') }, - loadData() { - this.spinning=true - this.tableHeads = [] - this.dataList = [] - getAction(this.url.list, this.queryParam).then(res => { - if (res.success) { - // console.log(res.result) - this.tableHeads = res.result.dates - this.dataList = res.result.mdcEfficiencyList - if (res.result.mdcEfficiencyList && !res.result.mdcEfficiencyList.length) { - this.$notification.info({ + mounted() { + window.addEventListener('resize', this.handleWindowResize) + this.handleWindowResize() + }, + 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' + } + }, + + /** + * 鏍煎紡鍖栨椂闂� + * @param seconds 绉掓暟 + * @returns '' 鏍煎紡鍖栧悗鏃堕棿瀛楃涓� + */ + getFormattedTime(seconds) { + if (seconds) { + return parseFloat((seconds / 3600).toFixed(2)) + } else { + return '0' + } + } + }, + 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 + } + }) + }, + selectChange(value, key) { + this.queryParams[key] = value + }, + checkSameData(dataList) { + let cache = {} //瀛樺偍鐨勬槸閿槸kclx 鐨勫�硷紝鍊兼槸kclx 鍦╥ndeces涓暟缁勭殑涓嬫爣 + let indices = [] //鏁扮粍涓瘡涓�涓�兼槸涓�涓暟缁勶紝鏁扮粍涓殑姣忎竴涓厓绱犳槸鍘熸暟缁勪腑鐩稿悓kclx鐨勪笅鏍� + dataList.map((item, index) => { + let level1 = item.level1 + let _index = cache[level1] + if (_index !== undefined) { + indices[_index].push(index) + } else { + cache[level1] = indices.length + indices.push([index]) + } + }) + let result = [] + indices.map((item) => { + item.map((index) => { + result.push(dataList[index]) + }) + }) + this.dataList = result + }, + checkSameData1(dataList) { + let cache = {} //瀛樺偍鐨勬槸閿槸kclx 鐨勫�硷紝鍊兼槸kclx 鍦╥ndeces涓暟缁勭殑涓嬫爣 + let indices = [] //鏁扮粍涓瘡涓�涓�兼槸涓�涓暟缁勶紝鏁扮粍涓殑姣忎竴涓厓绱犳槸鍘熸暟缁勪腑鐩稿悓kclx鐨勪笅鏍� + dataList.map((item, index) => { + let level2 = item.level2 + let _index = cache[level2] + if (_index !== undefined) { + indices[_index].push(index) + } else { + cache[level2] = indices.length + indices.push([index]) + } + }) + let result = [] + indices.map((item) => { + item.map((index) => { + result.push(dataList[index]) + }) + }) + this.dataList = result + }, + checkSameData2(dataList) { + let cache = {} //瀛樺偍鐨勬槸閿槸kclx 鐨勫�硷紝鍊兼槸kclx 鍦╥ndeces涓暟缁勭殑涓嬫爣 + let indices = [] //鏁扮粍涓瘡涓�涓�兼槸涓�涓暟缁勶紝鏁扮粍涓殑姣忎竴涓厓绱犳槸鍘熸暟缁勪腑鐩稿悓kclx鐨勪笅鏍� + dataList.map((item, index) => { + let level3 = item.level3 + let _index = cache[level3] + if (_index !== undefined) { + indices[_index].push(index) + } else { + cache[level3] = indices.length + indices.push([index]) + } + }) + let result = [] + indices.map((item) => { + item.map((index) => { + result.push(dataList[index]) + }) + }) + this.dataList = result + }, + // 鍚堝苟 + combineCell() { + console.log(this.dataList) + let list = this.dataList + for (let field in list[0]) { + var k = 0 + while (k < list.length) { + list[k][field + 'span'] = 1 + list[k][field + 'dis'] = false + for (var i = k + 1; i <= list.length - 1; i++) { + if (list[k][field] == list[i][field] && list[k][field] != '') { + list[k][field + 'span']++ + list[k][field + 'dis'] = false + list[i][field + 'span'] = 1 + list[i][field + 'dis'] = true + } else { + break + } + } + k = i + } + } + return list + }, + disabledDate(current) { + //Can not slect days before today and today + return current && current > moment().subtract('days', 1) + }, + initDeviceType(deviceList) { + let dictCode = 'mdc_equipmentType' + let items = [] + items = getDictItemsFromCache(dictCode) + if (deviceList && items.length > 0) { + for (let a = 0; a < deviceList.length; a++) { + if (items && items.length > 0) { + for (let i = 0; i < items.length; i++) { + if (deviceList[a].equipmentType == items[i].value) { + deviceList[a].equipmentType = items[i].title + } + } + } else { + ajaxGetDictItems(dictCode, null).then((res) => { + if (res.success) { + let items = res.result + for (let i = 0; i < items.length; i++) { + if (deviceList[a].equipmentType == items[i].value) { + deviceList[a].equipmentType = items[i].title + } + } + } + }) + } + } + } + }, + exportExcel() { + $('#EfficiencyPO').table2excel({ + exclude: '.noExl', + name: 'Excel Document Name', + filename: '璁惧寮�鍔ㄧ巼', + exclude_img: true, + fileext: '.xls', + exclude_links: true, + exclude_inputs: true + }) + }, + showIdentifying() { + getAction(this.url.listByType, { type: 'kdl' }).then(res => { + if (res.success) { + this.identifying = res.result + } + }) + }, + dateParamChange(v1, v2) { + this.queryParam.startTime = v2[0] + this.queryParam.endTime = v2[1] + // 鐐瑰嚮鏃堕棿閫夋嫨鍣ㄧ殑娓呯┖鎸夐挳鏃朵細瑙﹀彂姝ゅ垽鏂�(鐐瑰嚮閲嶇疆鎸夐挳涓嶄細瑙﹀彂)锛屽疄鐜伴噸缃垪琛ㄥ姛鑳斤紝鍒囧疄鏀瑰彉鍒楄〃鏄剧ず鏁堟灉 + if (!this.queryParam.startTime && !this.queryParam.endTime) this.searchReset() + }, + efficiencyOptionsOnChange(checkedList) { + // let index = checkedList.indexOf('lyl') + // if (index < 0) { + // // this.$message.warn('涓嶈兘鍙栨秷鏌ヨ鍒╃敤鐜�') + // this.$notification.warning({ + // message:'娑堟伅', + // description:"涓嶈兘鍙栨秷鏌ヨ鍒╃敤鐜�" + // }) + // return false + // } + this.checkedList = checkedList + }, + 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 => { + this.queryParam[item] = this.queryParams[item].join() + // 姝ゅ涓轰繚璇佹帴鍙e弬鏁颁笉澶氫綑锛屽彲鐪佺暐 + if (this.queryParams[item].length === 0) delete this.queryParam[item] + }) + this.loadData() + }, + searchReset() { + this.typeTree = this.queryParam.typeTree + this.typeParent = this.queryParam.parentId + this.typeEquipment = this.queryParam.equipmentId + this.queryParam = {} + this.queryParam.typeTree = this.typeTree + this.queryParam.parentId = this.typeParent + this.queryParam.equipmentId = this.typeEquipment + this.dates = [moment().subtract('days', 8), moment().subtract('days', 1)] + this.queryParam.startTime = moment(this.dates[0]).format('YYYYMMDD') + this.queryParam.endTime = moment(this.dates[1]).format('YYYYMMDD') + // this.ipagination.current = 1 + this.queryParams = { + equipmentType: [], + driveType: [], + deviceLevel: [], + deviceCategory: [] + } + this.loadData() + }, + loadData() { + this.spinning = true + this.tableHeads = [] + this.dataList = [] + getAction(this.url.list, this.queryParam).then(res => { + if (res.success) { + // console.log(res.result) + this.tableHeads = res.result.dates + this.dataList = res.result.mdcEfficiencyList + if (res.result.mdcEfficiencyList && !res.result.mdcEfficiencyList.length) { + this.$notification.info({ + message: '娑堟伅', + description: '鏆傛棤璇ヨ澶囩被鍨嬫暟鎹�' + }) + } + this.checkSameData(this.dataList) + this.checkSameData1(this.dataList) + this.checkSameData2(this.dataList) + this.combineCell() + // this.initDeviceType(this.dataList) + } + }).finally(() => { + this.spinning = false + }) + }, + 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.$message.warning(res.message) + this.$notification.warning({ message: '娑堟伅', - description: '鏆傛棤璇ヨ澶囩被鍨嬫暟鎹�' + description: res.message }) } - this.checkSameData(this.dataList) - this.checkSameData1(this.dataList) - this.checkSameData2(this.dataList) - this.combineCell(); - // this.initDeviceType(this.dataList) - } - }).finally(()=>{ - this.spinning=false - }) - }, - 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.$message.warning(res.message) - this.$notification.warning({ - message: '娑堟伅', - description: res.message - }) - } - }).finally(() => { - this.loading = false - }) - }, + }).finally(() => { + this.loading = false + }) + }, - /** - * 璋冪敤鎺ュ彛鑾峰彇鎺у埗绯荤粺绫诲瀷 - */ - getDriveTypeByApi(){ - api.getDriveTypeApi().then((res)=>{ - if (res.success) this.driveTypeList = res.result - }) - }, + /** + * 璋冪敤鎺ュ彛鑾峰彇鎺у埗绯荤粺绫诲瀷 + */ + getDriveTypeByApi() { + api.getDriveTypeApi().then((res) => { + if (res.success) this.driveTypeList = res.result + }) + }, - /** - * 鍒嗚鲸鐜囨敼鍙樻椂鍚屾椂鏀瑰彉琛ㄦ牸楂樺害宸蹭繚璇侀椤典竴杩涘叆涓嶆嫋鍔ㄥ瀭鐩存粴鍔ㄦ潯鏃跺嵆鍙嫋鍔ㄨ〃鏍兼按骞虫粴鍔ㄦ潯 - */ - handleWindowResize() { - const tableContainer = document.getElementById('EfficiencyPO') // 琛ㄦ牸瀹瑰櫒 - const clientHeight = document.documentElement.clientHeight || document.body.clientHeight // 娴忚鍣ㄥ彲瑙嗗尯鍩熼珮搴� - const containerTopToClientTopHeight = tableContainer.getBoundingClientRect().top // 琛ㄦ牸瀹瑰櫒椤堕儴鍒版祻瑙堝櫒鍙鍖哄煙椤堕儴鐨勯棿璺� - tableContainer.style.height = (clientHeight - containerTopToClientTopHeight - 32) + 'px' + /** + * 鍒嗚鲸鐜囨敼鍙樻椂鍚屾椂鏀瑰彉琛ㄦ牸楂樺害宸蹭繚璇侀椤典竴杩涘叆涓嶆嫋鍔ㄥ瀭鐩存粴鍔ㄦ潯鏃跺嵆鍙嫋鍔ㄨ〃鏍兼按骞虫粴鍔ㄦ潯 + */ + handleWindowResize() { + const tableContainer = document.getElementById('EfficiencyPO') // 琛ㄦ牸瀹瑰櫒 + const clientHeight = document.documentElement.clientHeight || document.body.clientHeight // 娴忚鍣ㄥ彲瑙嗗尯鍩熼珮搴� + const containerTopToClientTopHeight = tableContainer.getBoundingClientRect().top // 琛ㄦ牸瀹瑰櫒椤堕儴鍒版祻瑙堝櫒鍙鍖哄煙椤堕儴鐨勯棿璺� + tableContainer.style.height = (clientHeight - containerTopToClientTopHeight - 32) + 'px' + } } } -} </script> <style scoped> -/*table鏍峰紡*/ -.table2{ - width: 100%; - height: 100%; - overflow: auto; -} + /*table鏍峰紡*/ + .table2 { + width: 100%; + height: 100%; + overflow: auto; + } -.table2 thead tr th:first-child, -.table tbody tr .tdgu{ - position: sticky; - left: 0; - z-index: 1; -} + .table2 thead tr th:first-child, + .table tbody tr .tdgu { + position: sticky; + left: 0; + z-index: 1; + } -.table tbody tr .wenzi{ - /*writing-mode: vertical-lr;*/ - /*text-orientation: upright;*/ - transform: rotate(360deg); - writing-mode: vertical-lr; - letter-spacing: 2px; -} + .table tbody tr .wenzi { + /*writing-mode: vertical-lr;*/ + /*text-orientation: upright;*/ + transform: rotate(360deg); + writing-mode: vertical-lr; + letter-spacing: 2px; + } -.table tbody tr .kaitou{ - z-index: 1; - background-color: white; -} + .table tbody tr .kaitou { + z-index: 1; + background-color: white; + } -.table tbody tr .tdgu1{ - position: sticky; - left: 50px; - z-index: 2; -} + .table tbody tr .tdgu1 { + position: sticky; + left: 50px; + z-index: 2; + } -.table tbody tr .tdgu2{ - position: sticky; - left: 100px; - z-index: 2; -} + .table tbody tr .tdgu2 { + position: sticky; + left: 100px; + z-index: 2; + } -.table tbody tr .tdgu3{ - position: sticky; - left: 150px; - z-index: 2; -} + .table tbody tr .tdgu3 { + position: sticky; + left: 150px; + z-index: 2; + } -.table tbody tr .tdgu4{ - position: sticky; - left: 250px; - z-index: 2; -} + .table tbody tr .tdgu4 { + position: sticky; + left: 250px; + z-index: 2; + } -.table tbody tr .tdgu5{ - position: sticky; - left: 412px; - z-index: 2; -} + .table tbody tr .tdgu5 { + position: sticky; + left: 412px; + z-index: 2; + } -.table2 thead tr .timeth, -.table2 thead tr .thgu { - position: sticky; - top:0; - z-index: 3; -} + .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: 2; -} + .table2 thead .gudingth th { + position: sticky; + top: 32px; + z-index: 2; + } -.table2 thead .equipname .name{ - z-index: 3; -} + .table2 thead .equipname .name { + z-index: 3; + } -.table2 thead .equipname .dong1{ - z-index: 4; - left: 0; -} + .table2 thead .equipname .dong1 { + z-index: 4; + left: 0; + } -.table2 thead .equipname .dong2{ - z-index: 5; - left: 50px; -} + .table2 thead .equipname .dong2 { + z-index: 5; + left: 50px; + } + .table2 thead .equipname .dong3 { + z-index: 5; + left: 100px; + } -.table2 thead .equipname .dong3{ - z-index: 5; - left: 100px; -} + .table2 thead .equipname .dong4 { + z-index: 5; + left: 150px; + } -.table2 thead .equipname .dong4{ - z-index: 5; - left: 150px; -} + .table2 thead .equipname .dong5 { + z-index: 5; + left: 250px; + } -.table2 thead .equipname .dong5{ - z-index: 5; - left: 250px; -} + .table2 thead .equipname .dong6 { + z-index: 5; + left: 412px; + } -.table2 thead .equipname .dong6{ - z-index: 5; - left: 412px; -} + #EfficiencyPO { + overflow: hidden; + } -#EfficiencyPO{ - overflow: hidden; -} + .identifyingclass { + width: 55px; + height: 15px; + display: inline-block + } -.identifyingclass { - width: 55px; - height: 15px; - display: inline-block -} + .dataContent { + white-space: nowrap; + /*margin: 0;*/ + 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 { - white-space: nowrap; - /*margin: 0;*/ - 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 .thead th { + background-color: #fafafa; + text-align: center; + height: 30px; + padding: 5px; + } -.dataContent .thead th { - background-color: #fafafa; - text-align: center; - height: 30px; - padding: 5px; -} + .dataContent .notfixed th { + width: auto; + } -.dataContent .notfixed th { - width: auto; -} - -.dataContent .mathData td { - padding: 10px; -} + .dataContent .mathData td { + padding: 10px; + } </style> \ No newline at end of file diff --git a/src/views/mdc/base/modules/efficiencyReport/EfficiencyList.vue b/src/views/mdc/base/modules/efficiencyReport/EfficiencyList.vue index 390d213..1d555ac 100644 --- a/src/views/mdc/base/modules/efficiencyReport/EfficiencyList.vue +++ b/src/views/mdc/base/modules/efficiencyReport/EfficiencyList.vue @@ -182,31 +182,31 @@ </template> <template v-for="(tableHead, index) in item.dataList"> - <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('lyl') > -1"> + <td :style="{background:tableHead.color,minWidth:'100px' }" v-if="checkedList.indexOf('lyl') > -1"> {{tableHead.utilizationRate | numFilter}} </td> - <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('kjl') > -1"> + <td :style="{background:tableHead.color,minWidth:'100px' }" v-if="checkedList.indexOf('kjl') > -1"> {{tableHead.openRate | numFilter}} </td> - <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('gzl') > -1"> + <td :style="{background:tableHead.color ,minWidth:'100px'}" v-if="checkedList.indexOf('gzl') > -1"> {{tableHead.faultRate }} </td> - <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('kjsj') > -1"> + <td :style="{background:tableHead.color,minWidth:'110px' }" v-if="checkedList.indexOf('kjsj') > -1"> {{tableHead.openLong | getFormattedTime}} </td> - <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('jgsj') > -1"> + <td :style="{background:tableHead.color,minWidth:'110px' }" v-if="checkedList.indexOf('jgsj') > -1"> {{tableHead.processLong | getFormattedTime}} </td> - <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('qcgz') > -1"> + <td :style="{background:tableHead.color,minWidth:'220px' }" v-if="checkedList.indexOf('qcgz') > -1"> {{tableHead.removeFaultRunLong | getFormattedTime}} </td> - <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('djsj') > -1"> + <td :style="{background:tableHead.color,minWidth:'110px' }" v-if="checkedList.indexOf('djsj') > -1"> {{tableHead.waitLong | getFormattedTime}} </td> - <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('gjsj') > -1"> + <td :style="{background:tableHead.color,minWidth:'110px' }" v-if="checkedList.indexOf('gjsj') > -1"> {{tableHead.closeLong | getFormattedTime}} </td> - <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('gzsj') > -1"> + <td :style="{background:tableHead.color,minWidth:'110px' }" v-if="checkedList.indexOf('gzsj') > -1"> {{tableHead.faultLong | getFormattedTime}} </td> </template> diff --git a/src/views/mdc/base/modules/efficiencyShiftReport/EfficiencyShiftList.vue b/src/views/mdc/base/modules/efficiencyShiftReport/EfficiencyShiftList.vue index 8d1302f..9e089ae 100644 --- a/src/views/mdc/base/modules/efficiencyShiftReport/EfficiencyShiftList.vue +++ b/src/views/mdc/base/modules/efficiencyShiftReport/EfficiencyShiftList.vue @@ -148,7 +148,9 @@ v-if="dataList.length>0"> <thead> <tr class="thead fixed equipname"> - <th class="thgu dong1 name" rowspan="2" style="min-width: 50px; max-width: 50px;width: 50px;height: 66px">鍏徃</th> + <th class="thgu dong1 name" rowspan="2" + style="min-width: 50px; max-width: 50px;width: 50px;height: 66px">鍏徃 + </th> <th class="thgu dong2 name" rowspan="2" style="min-width: 50px; max-width: 50px;width: 50px;">杞﹂棿</th> <th class="thgu dong3 name" rowspan="2" style="min-width: 50px; max-width: 50px;width: 50px;">宸ユ</th> <th class="thgu dong4 name" rowspan="2" style="min-width: 100px; max-width: 100px;width: 100px;">璁惧缂栧彿 @@ -207,17 +209,19 @@ </template> <!--<td>{{item.tierType}}</td>--> <template v-for="(tableHead, index) in item.dataList"> - <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('lyl') > -1">{{tableHead.utilizationRate | numFilter}}</td> - <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('kjsj') > -1"> + <td :style="{background:tableHead.color ,minWidth:'110px'}" v-if="checkedList.indexOf('lyl') > -1"> + {{tableHead.utilizationRate | numFilter}} + </td> + <td :style="{background:tableHead.color ,minWidth:'110px'}" v-if="checkedList.indexOf('kjsj') > -1"> {{tableHead.openLong | getFormattedTime}} </td> - <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('jgsj') > -1"> + <td :style="{background:tableHead.color,minWidth:'110px' }" v-if="checkedList.indexOf('jgsj') > -1"> {{tableHead.processLong | getFormattedTime}} </td> - <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('djsj') > -1"> + <td :style="{background:tableHead.color ,minWidth:'110px'}" v-if="checkedList.indexOf('djsj') > -1"> {{tableHead.waitLong | getFormattedTime}} </td> - <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('gjsj') > -1"> + <td :style="{background:tableHead.color,minWidth:'110px' }" v-if="checkedList.indexOf('gjsj') > -1"> {{tableHead.closeLong | getFormattedTime}} </td> </template> -- Gitblit v1.9.3