From 49a74a67140e814bb70efcde61b37d4750448e6a Mon Sep 17 00:00:00 2001 From: zhuzhuanzhuan Date: 星期二, 14 五月 2024 16:39:01 +0800 Subject: [PATCH] 1、设备加工工件报表页面调整表格唯一标识字段由equipmentId调整为id以试图解决项目服务器上表格数据混乱问题 2、设备利用率、设备开动率、班次利用率以及设备综合效率分析页面调整设备类型、驱动类型、设备级别以及设备种类页面组件为多选下拉菜单 --- src/views/mdc/base/modules/OEEAnalysis/OEEAnalysisList.vue | 212 ++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 147 insertions(+), 65 deletions(-) diff --git a/src/views/mdc/base/modules/OEEAnalysis/OEEAnalysisList.vue b/src/views/mdc/base/modules/OEEAnalysis/OEEAnalysisList.vue index 0b18f26..c25e547 100644 --- a/src/views/mdc/base/modules/OEEAnalysis/OEEAnalysisList.vue +++ b/src/views/mdc/base/modules/OEEAnalysis/OEEAnalysisList.vue @@ -6,17 +6,70 @@ <a-form layout="inline" @keyup.enter.native="searchQuery"> <a-row :gutter="24"> <a-col :md="5" :sm="5" :xs="5"> - <a-form-item label="椹卞姩绫诲瀷"> - <a-auto-complete - v-model="queryParam.driveType" - :data-source="driveTypeList" - placeholder="璇烽�夋嫨椹卞姩绫诲瀷" - :filter-option="filterOption" - :allowClear="true" - /> + <a-form-item label="璁惧绫诲瀷"> + <a-select + :value="queryParams.equipmentType" + mode="multiple" + placeholder="璇烽�夋嫨璁惧绫诲瀷" + allow-clear + :maxTagCount="1" + @change="selectChange($event,'equipmentType')" + > + <a-select-option v-for="item in equipmentTypeList" :value="item.value"> + {{item.label}} + </a-select-option> + </a-select> </a-form-item> </a-col> - <a-col :md="7" :sm="7" :xs="7"> + <a-col :md="5" :sm="5" :xs="5"> + <a-form-item label="椹卞姩绫诲瀷"> + <a-select + :value="queryParams.driveType" + mode="multiple" + placeholder="璇烽�夋嫨椹卞姩绫诲瀷" + allow-clear + :maxTagCount="1" + @change="selectChange($event,'driveType')" + > + <a-select-option v-for="item in driveTypeList" :value="item.value"> + {{item.label}} + </a-select-option> + </a-select> + </a-form-item> + </a-col> + <a-col :md="4" :sm="4" :xs="4"> + <a-form-item label="璁惧绾у埆"> + <a-select + :value="queryParams.deviceLevel" + mode="multiple" + placeholder="璇烽�夋嫨璁惧绾у埆" + allow-clear + :maxTagCount="1" + @change="selectChange($event,'deviceLevel')" + > + <a-select-option v-for="item in device_level_list" :value="item.value"> + {{item.label}} + </a-select-option> + </a-select> + </a-form-item> + </a-col> + <a-col :md="5" :sm="5" :xs="5"> + <a-form-item label="璁惧绉嶇被"> + <a-select + :value="queryParams.deviceCategory" + mode="multiple" + placeholder="璇烽�夋嫨璁惧绉嶇被" + allow-clear + :maxTagCount="1" + @change="selectChange($event,'deviceCategory')" + > + <a-select-option v-for="item in device_category_list" :value="item.value"> + {{item.label}} + </a-select-option> + </a-select> + </a-form-item> + </a-col> + <a-col :md="5" :sm="5" :xs="5"> <a-form-item label="鏃堕棿"> <a-range-picker :placeholder="['寮�濮嬫椂闂�', '缁撴潫鏃堕棿']" @@ -28,11 +81,18 @@ /> </a-form-item> </a-col> - <a-col :md="2" :sm="2" :xs="2"> + + </a-row> + + <a-row :gutter="24" style="margin-bottom: 20px"> + <a-col :md="4" :sm="4" :xs="4"> <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-button type="primary" icon="printer" v-print="'#EfficiencyShift'" v-has="'efficiencyShift:print'"> + 鎵撳嵃 + </a-button> </a-space> </a-col> </a-row> @@ -79,15 +139,18 @@ pageSize: 10000, pageNo: 1 }, + queryParams: { + equipmentType: [], + driveType: [], + deviceLevel: [], + deviceCategory: [] + }, queryParamEquip: {}, queryParamPeople: {}, url: { list: '/mdc/mdcOverallEquipmentEfficiency/list', - initShiftList: '/mdc/mdcMdcShift/initShiftList', - initShiftSubList: '/mdc/mdcShiftSub/initShiftSubList' + queryEquipmentType: '/mdc/mdcEquipmentType/queryEquipmentType' }, - shiftList: [], - shiftSubList: [], columns: [ { title: '搴忓彿', @@ -272,17 +335,31 @@ ], dataSource: [], driveTypeList: [], + equipmentTypeList: [], + device_level_list: [], + device_category_list: [], scrollY: 465, tableLoading: 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') }, mounted() { window.addEventListener('resize', this.handleWindowResize) @@ -322,22 +399,31 @@ } } }, - filters: { - numFilter(value) { - if (value) { - return parseFloat((value * 100).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 + }, 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) { @@ -345,31 +431,6 @@ delete this.queryParam.endTime this.dates = [] } - }, - initShiftList() { - getAction(this.url.initShiftList).then((res) => { - if (res.success) { - this.shiftList = res.result - } - }) - }, - - initShiftSubList(val) { - //姣忔閲嶆柊閫夋嫨鐝埗鏃剁彮娆℃竻绌轰笖鏄剧ずplaceholder鍐呭 - this.queryParam.shiftSubId = undefined - getAction(this.url.initShiftSubList, { shiftId: val }).then((res) => { - if (res.success) { - this.shiftSubList = res.result - } - }) - }, - - initShiftSubListChange() { - getAction(this.url.initShiftSubList, { shiftId: this.queryParam.shiftId }).then((res) => { - if (res.success) { - this.shiftSubList = res.result - } - }) }, exportExcel() { @@ -392,14 +453,25 @@ this.queryParam.parentId = this.queryParamPeople.parentId this.queryParam.equipmentId = '' } - this.queryParam.pageNo = 1 + 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.queryParam = { pageSize: 10000, - pageNo: 1 + pageNo: 1, + typeTree: 1 + } + this.queryParams = { + equipmentType: [], + driveType: [], + deviceLevel: [], + deviceCategory: [] } this.dates = [] this.loadData() @@ -410,7 +482,25 @@ */ getDriveTypeByApi() { api.getDriveTypeApi().then((res) => { - this.driveTypeList = res.result.map(item => item.value) + 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 + } + }) + } else { + this.$notification.warning({ + message: '娑堟伅', + description: res.message + }) + } }) }, @@ -447,25 +537,17 @@ this.queryParam.pageSize = size this.loadData() }, - /** - * 鑱旀兂杈撳叆妗嗙瓫閫夊姛鑳� - * @param input 杈撳叆鐨勫唴瀹� - * @param option 閰嶇疆 - * @returns {boolean} 鍒ゆ柇鏄惁绛涢�� - */ - filterOption(input, option) { - return ( - option.componentOptions.children[0].text.toUpperCase().indexOf(input.toUpperCase()) >= 0 - ) - }, /** * 褰撴祻瑙堝櫒鍙绐楀彛灏哄鍙戠敓鏀瑰彉鏃惰Е鍙� */ handleWindowResize() { - const boxHeight = +window.getComputedStyle(document.getElementById('EfficiencyShift')).height.slice(0, -2) - const tableHeadHeight = +window.getComputedStyle(document.querySelector('.ant-table-thead th')).height.slice(0, -2) - this.scrollY = boxHeight - tableHeadHeight + const devicePixelRatio = window.devicePixelRatio // 娴忚鍣ㄧ缉鏀炬瘮 + if (devicePixelRatio < 1) return // 缂╂斁姣斿皬浜�1鏃朵笉杩涜楂樺害閲嶆柊璁剧疆锛屽洜涓簊crollY鍙樺ぇ鍚庤〃鏍艰秴鍑洪儴鍒嗕細琚殣钘忓鑷存粴鍔ㄦ潯涓嶅彲瑙� + const clientHeight = document.body.clientHeight // 娴忚鍣ㄥ彲瑙嗗尯鍩熼珮搴� + const containerTopToClientTopHeight = document.getElementById('EfficiencyShift').getBoundingClientRect().top // 琛ㄦ牸瀹瑰櫒椤堕儴鍒版祻瑙堝櫒鍙鍖哄煙椤堕儴鐨勯棿璺� + const tableHeadHeight = +window.getComputedStyle(document.querySelector('.ant-table-thead th')).height.slice(0, -2) // 琛ㄦ牸琛ㄥご楂樺害 + this.scrollY = clientHeight - containerTopToClientTopHeight - tableHeadHeight // 琛ㄦ牸鍨傜洿婊氬姩鏉¢珮搴� } } } -- Gitblit v1.9.3