From 41d50b20c975faeaa9e5277bdcff13b5acecb575 Mon Sep 17 00:00:00 2001 From: qushaowei <qushaowei@163.com> Date: 星期三, 13 十二月 2023 16:57:37 +0800 Subject: [PATCH] Merge branch 'master' of http://117.34.109.166:18448/r/vue_mdc_430 into develop --- src/views/mdc/base/modules/deviceRepair/DeviceRepairModel.vue | 35 src/views/mdc/base/modules/mdcPassRate/mdcPassRateModal.vue | 32 src/components/tools/UserMenu.vue | 7 src/views/mdc/base/EfficiencyReport.vue | 4 src/views/mdc/base/MdcUtilizationRateList.vue | 10 src/views/mdc/base/modules/HolidayManagement/HolidayManagementModal.vue | 30 src/views/mdc/base/modules/openRateFractionAnalysis/openRateFractionAnalysisMain.vue | 67 src/components/tools/Logo.vue | 4 src/views/user/Login.vue | 36 src/views/system/WorkshopSignageManagement.vue | 40 src/views/mdc/base/modules/efficiencyReport/EfficiencyList.vue | 1215 +++++++------ src/views/mdc/base/modules/DepartList/DepartListTree/DepartTree.vue | 1 src/views/system/modules/UserModal.vue | 27 src/views/mdc/base/modules/mdcDriveTypeParamConfig/MdcDriveTypeParamConfigForm.vue | 2 src/views/mdc/base/modules/comparativeAnalysis/comparativeAnalysismain.vue | 358 ++- src/views/mdc/base/modules/efficiencyShiftReport/EfficiencyShiftList.vue | 292 ++- src/views/mdc/base/modules/equipmentAvailCompare/equipmentAvailCompareMain.vue | 1 src/views/mdc/base/modules/mdcStandardProcessDuration/MdcStandardProcessDurationModal.vue | 31 src/views/mdc/base/modules/equipmentDayAvail/equipmentDayAvailMain.vue | 2 src/defaultSettings.js | 2 src/views/mdc/base/modules/openRateTrendAnalysis/openRateTrendAnalysisMain.vue | 61 src/views/mdc/base/DeviceProcessReport.vue | 139 + src/views/mdc/base/modules/efficiencyPOReport/EfficiencyPOList.vue | 195 + src/assets/lxzn_white.png | 0 src/views/mdc/base/modules/deviceBaseInfo/EqumentDetaiModel.vue | 87 src/views/system/modules/PasswordModal.vue | 23 src/views/mdc/base/modules/DeviceProcessReport/DeviceProcessReportList.vue | 439 +++++ src/components/tools/UserPassword.vue | 62 src/views/system/ProductionManager.vue | 375 ++-- src/views/mdc/base/modules/mdcUtilizationRate/MdcUtilizationRateModel.vue | 21 src/views/system/modules/ProductionManager/ProductionModal.vue | 2 src/views/mdc/base/modules/TorqueconfigurationList/TorqueconfigurationModal.vue | 166 + src/views/system/modules/SelectDeviceModal.vue | 527 ++++-- src/views/mdc/base/modules/UnplannedDowntimemManager/UnplannedDowntimemManagerModal.vue | 32 src/views/system/UserList.vue | 9 src/views/WorkshopSignage.vue | 83 src/views/mdc/common/BaseTree.vue | 1 src/components/layouts/UserLayout.vue | 2 src/views/mdc/base/modules/OEEAnalysis/OEEAnalysisList.vue | 75 src/components/page/GlobalHeader.vue | 63 src/views/mdc/base/modules/WorkshopSignage/EquipmentDetailModal.vue | 91 src/views/user/LoginAccount.vue | 2 src/views/mdc/base/EfficiencyPOReport.vue | 4 src/views/mdc/base/modules/alarmAnalysis/alarmAnalysisMain.vue | 376 +++ src/views/mdc/base/modules/deviceCalendar/DeviceCalendarModel.vue | 28 45 files changed, 3,415 insertions(+), 1,644 deletions(-) diff --git a/src/assets/lxzn_white.png b/src/assets/lxzn_white.png new file mode 100644 index 0000000..b1a06bf --- /dev/null +++ b/src/assets/lxzn_white.png Binary files differ diff --git a/src/components/layouts/UserLayout.vue b/src/components/layouts/UserLayout.vue index c0d5e6a..42d7cce 100644 --- a/src/components/layouts/UserLayout.vue +++ b/src/components/layouts/UserLayout.vue @@ -5,7 +5,7 @@ <div class="header"> <a href="/"> <img src="~@/assets/lxzn.png" class="logo" alt="logo"> - <span class="title">缁熻鍒嗘瀽</span> + <span class="title">MDC鏅烘収杞﹂棿</span> </a> </div> <!--<div class="desc">--> diff --git a/src/components/page/GlobalHeader.vue b/src/components/page/GlobalHeader.vue index aceaf87..c1a9b71 100644 --- a/src/components/page/GlobalHeader.vue +++ b/src/components/page/GlobalHeader.vue @@ -25,7 +25,11 @@ <div v-else :class="['top-nav-header-index', theme]"> <div class="header-index-wide"> <div class="header-index-left" :style="topMenuStyle.headerIndexLeft"> - <logo class="top-nav-header" :show-title="device !== 'mobile'" :style="topMenuStyle.topNavHeader"/> + <logo class="top-nav-header" :show-title="showTitle" :style="topMenuStyle.topNavHeader"/> + <div class="top-nav-text"> + <div style="width:100%;height: 50%;line-height:35px">瀵嗙骇锛氬唴閮�</div> + <div style="width:100%;height: 50%;line-height:25px">璀﹀憡锛氭湰绯荤粺绂佹瀛樺偍銆佸鐞嗐�佷紶杈撴秹瀵嗕俊鎭�</div> + </div> <div v-if="device !== 'mobile'" :style="topMenuStyle.topSmenuStyle"> <s-menu mode="horizontal" @@ -58,7 +62,7 @@ components: { UserMenu, SMenu, - Logo, + Logo }, mixins: [mixin], props: { @@ -98,6 +102,7 @@ topSmenuStyle: {} }, chatStatus: '', + showTitle: true } }, watch: { @@ -121,6 +126,8 @@ if (this.mode === 'topmenu') { this.buildTopMenuStyle() } + window.addEventListener('resize', this.handleResize) + this.topMenuStyle.topNavHeader = { 'min-width': '165px', width: '165px' } //update-end--author:sunjianlei---date:20190508------for: 椤堕儴瀵艰埅鏍忚繃闀挎椂鏄剧ず鏇村鎸夐挳----- }, methods: { @@ -150,8 +157,8 @@ this.topMenuStyle.headerIndexLeft = {} } else { let rightWidth = '360px' - this.topMenuStyle.topNavHeader = { 'min-width': '165px' } - this.topMenuStyle.topSmenuStyle = { 'width': 'calc(100% - 165px)' } + this.topMenuStyle.topNavHeader = { 'min-width': '50px', width: '50px' } + this.topMenuStyle.topSmenuStyle = { 'width': 'calc(100% - 350px)' } this.topMenuStyle.headerIndexRight = { 'min-width': rightWidth } this.topMenuStyle.headerIndexLeft = { 'width': `calc(100% - ${rightWidth})` } } @@ -165,6 +172,20 @@ }, // update-end-author:sunjianlei date:20210508 for: 淇鍔ㄦ�佸姛鑳芥祴璇曡彍鍗曘�佸甫鍙傛暟鑿滃崟鏍囬閿欒銆佸睍寮�閿欒鐨勯棶棰� + handleResize() { + console.log('瑙﹀彂灏哄鏀瑰彉', window.innerWidth) + if (window.innerWidth > 1680) { + this.showTitle = true + this.topMenuStyle.topNavHeader = { 'min-width': '165px' } + this.topMenuStyle.topSmenuStyle = { 'width': 'calc(100% - 165px)' } + } else if (window.innerWidth <= 1680 && window.innerWidth > 1280) { + this.showTitle = false + this.topMenuStyle.topNavHeader = { 'min-width': '50px', width: '50px' } + this.topMenuStyle.topSmenuStyle = { 'width': 'calc(100% - 250px)' } + } else if (window.innerWidth <= 1280 && window.innerWidth > 960) { + this.topMenuStyle.topSmenuStyle = { 'width': 'calc(100% - 350px)' } + } + } } } </script> @@ -223,4 +244,38 @@ /* update_end author:scott date:20190220 for: 缂╁皬棣栭〉甯冨眬椤堕儴鐨勯珮搴�*/ + .top-nav-text { + color: #f00; + height: 100% + } + + @media screen and (min-width: 1920px) { + .top-nav-text { + min-width: 400px; + } + } + + @media screen and (min-width: 1680px) and (max-width: 1920px) { + .top-nav-text { + min-width: 300px; + } + } + + @media screen and (min-width: 1400px) and (max-width: 1680px) { + .top-nav-text { + min-width: 300px; + } + } + + @media screen and (min-width: 1280px) and (max-width: 1400px) { + .top-nav-text { + min-width: 450px; + } + } + + @media screen and (max-width: 1280px) { + .top-nav-text { + min-width: 300px; + } + } </style> \ No newline at end of file diff --git a/src/components/tools/Logo.vue b/src/components/tools/Logo.vue index 29a1be8..08e69d6 100644 --- a/src/components/tools/Logo.vue +++ b/src/components/tools/Logo.vue @@ -3,7 +3,7 @@ <router-link :to="routerLinkTo"> <!-- update-begin- author:sunjianlei --- date:20190814 --- for: logo棰滆壊鏍规嵁涓婚棰滆壊鍙樺寲 --> - <img v-if="navTheme === 'dark'" src="~@/assets/lxzn.png" alt="logo"> + <img v-if="navTheme === 'dark'" src="~@/assets/lxzn_white.png" alt="logo"> <img v-else src="~@/assets/lxzn.png" alt="logo"> <!-- update-begin- author:sunjianlei --- date:20190814 --- for: logo棰滆壊鏍规嵁涓婚棰滆壊鍙樺寲 --> @@ -21,7 +21,7 @@ props: { title: { type: String, - default: '缁熻鍒嗘瀽', + default: 'MDC鏅烘収杞﹂棿', required: false }, showTitle: { diff --git a/src/components/tools/UserMenu.vue b/src/components/tools/UserMenu.vue index 8f462d8..3da3327 100644 --- a/src/components/tools/UserMenu.vue +++ b/src/components/tools/UserMenu.vue @@ -16,7 +16,7 @@ :filterOption="filterOption" :open="isMobile()?true:null" :getPopupContainer="(node) => node.parentNode" - :style="isMobile()?{width: '100%',marginBottom:'50px'}:{}" + :style="isMobile()?{width: '100%',marginBottom:'50px',color:theme=='dark'?'#fff':'#000'}:{color:theme=='dark'?'#fff':'#000'}" @change="searchMethods" @blur="hiddenClick" > @@ -79,8 +79,8 @@ </a-menu-item>--> </a-menu> </a-dropdown> - <span class="action"> - <a class="logout_title" href="javascript:;" @click="handleLogout"> + <span class="action" @click="handleLogout"> + <a class="logout_title" href="javascript:;" > <a-icon type="logout"/> <span v-if="isDesktop()"> 閫�鍑虹櫥褰�</span> </a> @@ -268,7 +268,6 @@ /* update-begin author:sunjianlei date:20191220 for: 瑙e喅鍏ㄥ眬鏍峰紡鍐茬獊闂 */ .user-wrapper .search-input { width: 180px; - color: inherit; /deep/ .ant-select-selection { background-color: inherit; diff --git a/src/components/tools/UserPassword.vue b/src/components/tools/UserPassword.vue index ff16648..0067138 100644 --- a/src/components/tools/UserPassword.vue +++ b/src/components/tools/UserPassword.vue @@ -31,14 +31,13 @@ label="纭鏂板瘑鐮�"> <a-input type="password" @blur="handleConfirmBlur" placeholder="璇风‘璁ゆ柊瀵嗙爜" v-decorator="[ 'confirmpassword', validatorRules.confirmpassword]"/> </a-form-item> - </a-form> </a-spin> </a-modal> </template> <script> - + import { ajaxGetDictItems, getDictItemsFromCache } from '@/api/api' import { putAction } from '@/api/manage' export default { @@ -57,10 +56,14 @@ }, password:{ rules: [{ - required: true, message: '璇疯緭鍏ユ柊瀵嗙爜!', + required: true, message: '璇疯緭鍏ユ柊瀵嗙爜!',trigger:'blur' }, { validator: this.validateToNextPassword, - }], + }, + { + pattern: /^(?=.*[a-zA-Z])(?=.*\d)(?=.*[~!@#$%^&*()_+`\-={}:";'<>?,./]).{8,}$/, + message: '瀵嗙爜鐢�8浣嶆暟瀛椼�佸ぇ灏忓啓瀛楁瘝鍜岀壒娈婄鍙风粍鎴�!', + }], }, confirmpassword:{ rules: [{ @@ -85,6 +88,13 @@ username:"", } }, + watch:{ + visible:{ + handler(value){ + if(value) this.initDictData('password_length') + } + } + }, methods: { show(uname){ if(!uname){ @@ -95,6 +105,18 @@ this.form.resetFields(); this.visible = true; } + }, + initDictData(dictCode) { + //鏍规嵁瀛楀吀Code, 鍒濆鍖栧瓧鍏告暟缁� + ajaxGetDictItems(dictCode, null).then((res) => { + if (res.success) { + const regExp = new RegExp("^(?=.*[a-zA-Z])(?=.*\\\d)(?=.*[~!@#$%^&*()_+`\\-={}:\";'<>?,./]).{"+Number(res.result[0].value)+",}$"); + this.validatorRules.password.rules[2]={ + pattern: regExp, + message: `瀵嗙爜鐢�${res.result[0].value}浣嶆暟瀛椼�佸ぇ灏忓啓瀛楁瘝鍜岀壒娈婄鍙风粍鎴�!`, + } + } + }) }, handleCancel () { this.close() @@ -110,20 +132,24 @@ // 瑙﹀彂琛ㄥ崟楠岃瘉 this.form.validateFields((err, values) => { if (!err) { - that.confirmLoading = true; - let params = Object.assign({username:this.username},values) - console.log("淇敼瀵嗙爜鎻愪氦鏁版嵁",params) - putAction(this.url,params).then((res)=>{ - if(res.success){ - console.log(res) - that.$message.success(res.message); - that.close(); - }else{ - that.$message.warning(res.message); - } - }).finally(() => { - that.confirmLoading = false; - }) + if(values.oldpassword!==values.confirmpassword){ + that.confirmLoading = true; + let params = Object.assign({username:this.username},values) + console.log("淇敼瀵嗙爜鎻愪氦鏁版嵁",params) + putAction(this.url,params).then((res)=>{ + if(res.success){ + console.log(res) + that.$message.success(res.message); + that.close(); + }else{ + that.$message.warning(res.message); + } + }).finally(() => { + that.confirmLoading = false; + }) + }else{ + that.$message.warning('鏂板瘑鐮佷笌鏃у瘑鐮佷笉鑳界浉鍚�'); + } } }) }, diff --git a/src/defaultSettings.js b/src/defaultSettings.js index 150475c..2d337e1 100644 --- a/src/defaultSettings.js +++ b/src/defaultSettings.js @@ -15,7 +15,7 @@ export default { primaryColor: '#000000', // primary color of ant design - navTheme: 'light', // theme for nav menu + navTheme: 'dark', // theme for nav menu layout: 'topmenu', // nav menu position: sidemenu or topmenu contentWidth: 'Fixed', // layout of content: Fluid or Fixed, only works when layout is topmenu fixedHeader: true, // sticky header diff --git a/src/views/WorkshopSignage.vue b/src/views/WorkshopSignage.vue index 7c0379b..5dc5cb2 100644 --- a/src/views/WorkshopSignage.vue +++ b/src/views/WorkshopSignage.vue @@ -1,6 +1,6 @@ <template> <dv-full-screen-container class="full-screen-container"> - <header class="page-header"> + <header class="page-header" :style="{height: pageHeaderHeight+'px'}"> {{ workshopDetails.workshopName }} <div class="header-left" v-has="'home:saveDevicePositionAndSize'"> <a-space> @@ -17,11 +17,11 @@ <a-button type="primary" icon="save" size="large" @click="saveDevicePositionAndSizeByApi">淇濆瓨浣嶇疆</a-button> </div> <div class="device-status-info"> - <div v-for="item in deviceStatusList" :key="item.value" class="single-status-info"> + <a-space v-for="item in deviceStatusList" :key="item.value" class="single-status-info"> <div>{{ item.label }}</div> <div class="status-square" :style="{ backgroundColor: item.color }"></div> <div>{{ getDeviceNumberByStatus(item.value) }}</div> - </div> + </a-space> </div> </header> @@ -77,7 +77,6 @@ </div> </div> </VueDragResize> - </div> </dv-border-box-8> @@ -103,6 +102,11 @@ }, 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, // 鏄惁寮�鍚缉鏀� @@ -141,7 +145,8 @@ value: 22, color: '#FF0000' } - ] // 璁惧鐘舵�佹寚绀虹伅鍒楄〃 + ],// 璁惧鐘舵�佹寚绀虹伅鍒楄〃锛� + isFullscreen: false } }, watch: { @@ -186,7 +191,14 @@ this.workshopDetails.backgroundImage )})` + this.fullScreenPageHeight = `calc(100% - ${this.pageHeaderHeight}px)` + this.normalPageHeight = `calc(100% - ${this.pageHeaderHeight}px - ${this.taskBarHeight}px - ${this.utilsBarHeight}px)` + if (this.isFullscreen) { + this.$refs.deviceContainerRef.style.height = this.fullScreenPageHeight + } else { + this.$refs.deviceContainerRef.style.height = this.normalPageHeight + } }) }, @@ -285,6 +297,35 @@ // setTimeout( this.$refs.equmentDetaiModel.initData(item.equipmentId),0) // },1000*10) } + }, + + onResize() { + // 鍒╃敤灞忓箷鍒嗚鲸鐜囧拰window瀵硅薄鐨勫唴楂樺害鏉ュ垽鏂吋瀹笽E + let winFlag = window.innerHeight === window.screen.height + // 鍒╃敤window鍏ㄥ睆鏍囪瘑鏉ュ垽鏂� -- IE鏃犳晥 + let isFull = window.fullScreen || document.webkitIsFullScreen + + if (isFull === undefined) { + this.isFullscreen = winFlag + } else { + this.isFullscreen = winFlag || isFull + } + console.log(winFlag) // true鍏ㄥ睆 false涓嶆槸鍏ㄥ睆 + console.log('浠诲姟鏍忛珮搴�', this.taskBarHeight) + console.log('宸ュ叿鏍忛珮搴�', this.utilsBarHeight) + + //鍏ㄥ睆鍒欏浘绾哥洅瀛愬彲瑙嗛珮搴﹀噺鍘婚〉澶撮珮搴︼紝姝e父绐楀彛鍒欏噺鍘婚〉澶淬�佸睆骞曞簳閮ㄤ换鍔℃爮浠ュ強娴忚鍣ㄥ伐鍏锋爮楂樺害 + if (winFlag) { + console.log('瑙﹀彂鍏ㄥ睆') + this.$refs.deviceContainerRef.style.height = this.fullScreenPageHeight + + } else { + console.log('鍏抽棴鍏ㄥ睆') + // 濡傛灉鍒锋柊椤甸潰閲嶆柊鍔犺浇鍚庨粯璁ゅ浜庡叏灞忔ā寮忥紝鍒欏伐鍏锋爮楂樺害涓鸿礋鏁帮紝鍥犳闇�瑕侀��鍑哄叏灞忔ā寮忔椂閲嶇疆宸ュ叿鏍忛珮搴� + this.utilsBarHeight = window.outerHeight - window.innerHeight + this.normalPageHeight = `calc(100% - ${this.pageHeaderHeight}px - ${this.taskBarHeight}px - ${this.utilsBarHeight}px)` + this.$refs.deviceContainerRef.style.height = this.normalPageHeight + } } }, @@ -293,15 +334,29 @@ this.getDeviceListByApi(this.$route.params.id) this.getWorkshopDetailsByApi(this.$route.params.id) } + + + let winFlag = window.innerHeight === window.screen.height + // 鍒╃敤window鍏ㄥ睆鏍囪瘑鏉ュ垽鏂� -- IE鏃犳晥 + let isFull = window.fullScreen || document.webkitIsFullScreen + + if (isFull === undefined) { + this.isFullscreen = winFlag + } else { + this.isFullscreen = winFlag || isFull + } + + // window.addEventListener('resize', this.onResize) }, mounted() { // 绂佹鐢ㄦ埛閫変腑鍐呭 document.onselectstart = () => false }, beforeDestroy() { - // 纭繚閿�姣佸畾鏃跺櫒鍙婂洖鏀惰祫婧� + // 纭繚閿�姣佸畾鏃跺櫒銆佷簨浠跺強鍥炴敹璧勬簮 clearInterval(this.timingAcquisition) this.timingAcquisition = null + // window.removeEventListener('resize', this.onResize) } } </script> @@ -313,7 +368,6 @@ color: #fff; .page-header { - height: 80px; font-size: 50px; text-align: center; position: relative; @@ -340,10 +394,10 @@ justify-content: space-between; .single-status-info { - width: 60px; - display: flex; - align-items: center; - justify-content: space-between; + /*width: 70px;*/ + /*display: flex;*/ + /*align-items: center;*/ + /*justify-content: space-between;*/ .status-square { width: 14px; @@ -357,10 +411,10 @@ .content-container { width: 100%; - height: calc(100% - 80px); + /*height: calc(100% - 200px);*/ + /*height: 100%;*/ background-repeat: no-repeat; background-size: 100% 100%; - .single-device { position: absolute; @@ -380,8 +434,7 @@ width: 100%; height: 100%; display: flex; - align-items:end ; - + align-items: end; .status-image { background-size: 100% 100%; diff --git a/src/views/mdc/base/DeviceProcessReport.vue b/src/views/mdc/base/DeviceProcessReport.vue new file mode 100644 index 0000000..ee790c5 --- /dev/null +++ b/src/views/mdc/base/DeviceProcessReport.vue @@ -0,0 +1,139 @@ +<template> + <div style="width: 100%; height: 100%;"> + <a-card :bordered="false"> + <a-row type="flex" :gutter="16"> + <a-col :md="5"> + <a-tabs :activeKey="activeKey" @change="tabChange"> + <a-tab-pane key="1" tab="杞﹂棿灞傜骇" force-render> + <base-tree @getCurrSelected="changeSelectionNode"></base-tree> + </a-tab-pane> + <a-tab-pane v-if="isDepartType == 0" key="2" tab="閮ㄩ棬灞傜骇"> + <depart-tree @getCurrSelectedDD="changeSelectionNodedd"></depart-tree> + </a-tab-pane> + </a-tabs> + </a-col> + + <a-col :md="19"> + <DeviceProcessReportList ref="deviceList" :nodeTree='selectEquement' :nodePeople='selectPeople' + :Type="slectTypeTree"/> + </a-col> + </a-row> + </a-card> + </div> + +</template> + +<script> + import { putAction, getAction } from '@/api/manage' + import { frozenBatch } from '@/api/api' + import { JeecgListMixin } from '@/mixins/JeecgListMixin' + import JInput from '@/components/jeecg/JInput' + import BaseTree from '../common/BaseTree' + import EfficiencyShiftList from './modules/efficiencyShiftReport/EfficiencyShiftList' + import JSuperQuery from '@/components/jeecg/JSuperQuery' + import JThirdAppButton from '@/components/jeecgbiz/thirdApp/JThirdAppButton' + import DepartTree from './modules/DepartList/DepartListTree/DepartTree' + import { mapActions } from 'vuex' + import DeviceProcessReportList from './modules/DeviceProcessReport/DeviceProcessReportList' + + export default { + name: 'DeviceProcessReport', + components: { + DeviceProcessReportList, + JThirdAppButton, + JInput, + BaseTree, + JSuperQuery, + DepartTree, + EfficiencyShiftList + }, + data() { + return { + activeKey: '1', + description: '璁惧淇℃伅', + selectEquementId: '', + selectEquement: {}, + slectTypeTree: '', + selectPeople: {}, + url: { + equipmentStatistics: '/mdc/equipment/equipmentStatistics' + }, + isDepartType: '' + } + }, + created() { + this.queryTreeData() + }, + methods: { + ...mapActions(['QueryDepartTree']), + queryTreeData() { + this.QueryDepartTree().then(res => { + if (res.success) { + this.isDepartType = res.result[0].value + } else { + // this.$message.warn(res.message) + this.$notification.warning({ + message: '娑堟伅', + description: res.message + }) + } + }).finally(() => { + }) + }, + tabChange(val) { + // console.log(val); + this.activeKey = val + this.slectTypeTree = val + }, + changeSelectionNode(val) { + this.selectEquement = val + this.slectTypeTree = '1' + }, + changeSelectionNodedd(val) { + this.selectPeople = val + this.slectTypeTree = '2' + } + } + + } +</script> +<style scoped> + @import '~@assets/less/common.less'; + + .equipMessage { + width: 100%; + height: 10%; + } + + .equipMessage table { + width: 60%; + height: 100%; + line-height: 50%; + } + + .equipMessage table td { + text-align: center; + } + + .equipMessage table td span { + display: inline-block; + width: 15px; + height: 15px; + } + + .equipMessage table td .equipShutdown { + background-color: #808080; + } + + .equipMessage table td .equipStandby { + background-color: #ffbf37; + } + + .equipMessage table td .equipRun { + background-color: #19FE01; + } + + .equipMessage table td .equipAlarm { + background-color: #FD0008; + } +</style> \ No newline at end of file diff --git a/src/views/mdc/base/EfficiencyPOReport.vue b/src/views/mdc/base/EfficiencyPOReport.vue index 6ff308f..b9749d0 100644 --- a/src/views/mdc/base/EfficiencyPOReport.vue +++ b/src/views/mdc/base/EfficiencyPOReport.vue @@ -2,7 +2,7 @@ <div style="width: 100%; height: 100%;"> <a-card :bordered="false"> <a-row type="flex" :gutter="16"> - <a-col :md="4"> + <a-col :md="5"> <a-tabs :activeKey="activeKey" @change="tabChange"> <a-tab-pane key="1" tab="杞﹂棿灞傜骇" force-render> <base-tree @getCurrSelected="changeSelectionNode"></base-tree> @@ -12,7 +12,7 @@ </a-tab-pane> </a-tabs> </a-col> - <a-col :md="20"> + <a-col :md="19"> <efficiencyPO-list ref="EfficiencyPOList" :nodeTree='selectEquement' :nodePeople='selectPeople' :Type="slectTypeTree"/> </a-col> </a-row> diff --git a/src/views/mdc/base/EfficiencyReport.vue b/src/views/mdc/base/EfficiencyReport.vue index 9b35e22..e9cc7ef 100644 --- a/src/views/mdc/base/EfficiencyReport.vue +++ b/src/views/mdc/base/EfficiencyReport.vue @@ -2,7 +2,7 @@ <div style="width: 100%; height: 100%;"> <a-card :bordered="false"> <a-row type="flex" :gutter="16"> - <a-col :md="4"> + <a-col :md="5"> <a-tabs :activeKey="activeKey" @change="tabChange"> <a-tab-pane key="1" tab="杞﹂棿灞傜骇" force-render> <base-tree @getCurrSelected="changeSelectionNode"></base-tree> @@ -12,7 +12,7 @@ </a-tab-pane> </a-tabs> </a-col> - <a-col :md="20"> + <a-col :md="19"> <EfficiencyList ref="EfficiencyList" :nodePeople='selectPeople' :nodeTree = 'selectEquement' :Type="slectTypeTree"></EfficiencyList> </a-col> </a-row> diff --git a/src/views/mdc/base/MdcUtilizationRateList.vue b/src/views/mdc/base/MdcUtilizationRateList.vue index f9293d0..3ed3fa0 100644 --- a/src/views/mdc/base/MdcUtilizationRateList.vue +++ b/src/views/mdc/base/MdcUtilizationRateList.vue @@ -9,11 +9,11 @@ <a-input placeholder="璇疯緭鍏ョ被鍒�" v-model="queryParam.rateParameterCategory"></a-input> </a-form-item> </a-col> - <a-col :md="2" :sm="2"> - <a-button type="primary" @click="searchQuery" icon="search">鏌ヨ</a-button> - </a-col> - <a-col :md="2" :sm="2"> - <a-button type="primary" @click="searchReset" icon="reload">閲嶇疆</a-button> + <a-col> + <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> diff --git a/src/views/mdc/base/modules/DepartList/DepartListTree/DepartTree.vue b/src/views/mdc/base/modules/DepartList/DepartListTree/DepartTree.vue index 99dfe82..f6eb2c5 100644 --- a/src/views/mdc/base/modules/DepartList/DepartListTree/DepartTree.vue +++ b/src/views/mdc/base/modules/DepartList/DepartListTree/DepartTree.vue @@ -145,6 +145,7 @@ this.allTreeKeys = [] this.treeDataSource = res.result this.generateList(res.result) + this.expandedKeys=this.allTreeKeys } else { // this.$message.warn(res.message) this.$notification.warning({ diff --git a/src/views/mdc/base/modules/DeviceProcessReport/DeviceProcessReportList.vue b/src/views/mdc/base/modules/DeviceProcessReport/DeviceProcessReportList.vue new file mode 100644 index 0000000..a4b39d9 --- /dev/null +++ b/src/views/mdc/base/modules/DeviceProcessReport/DeviceProcessReportList.vue @@ -0,0 +1,439 @@ +<template> + <div style="width: 100%;"> + <div :bordered="false"> + <!-- 鏌ヨ鍖哄煙 --> + <div class="seach-content"> + <div class="table-page-search-wrapper"> + <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" + /> + </a-form-item> + </a-col> + + <a-col :md="5" :sm="5" :xs="5"> + <a-form-item label="鏃堕棿"> + <a-range-picker + :placeholder="['寮�濮嬫椂闂�', '缁撴潫鏃堕棿']" + format="YYYY-MM-DD" + :value="dates" + @change="dateParamChange" + /> + </a-form-item> + </a-col> + + <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-space> + </a-col> + </a-row> + </a-form> + + </div> + </div> + + <div class="container" id="EfficiencyShift" style="margin-top: 20px;"> + <div class="table2"> + <a-table :columns="columns" :dataSource="dataSource.records" :pagination="false" bordered> + <span slot="duration" slot-scope="text">{{getFormattedTime(text)}}</span> + </a-table> + </div> + </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> + </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' + + export default { + name: 'DeviceProcessReportList', + components: {}, + data() { + return { + typeTree: '', + typeParent: 1, + typeEquipment: 1, + allowClear: true, + allowClearSu: true, + dates: [moment(), moment()], + identifying: [], + queryParam: { + pageSize: 20, + pageNo: 1 + }, + queryParamEquip: {}, + queryParamPeople: {}, + url: { + list: '/mdc/mdcProcessCount/list' + }, + columns: [ + { + title: '搴忓彿', + dataIndex: '', + key: 'rowIndex', + width: 70, + align: 'center', + customRender: function(t, r, index) { + return parseInt(index) + 1 + } + // fixed: 'left' + }, + { + title: '璁惧缁熶竴缂栧彿', + align: 'center', + dataIndex: 'equipmentId', + width: 120 + }, + { + title: '璁惧鍚嶇О', + align: 'center', + width: 150, + dataIndex: 'equipmentName' + }, + { + title: '椹卞姩绫诲瀷', + align: 'center', + width: 110, + dataIndex: 'driveType' + }, + { + title: '绋嬪簭鍙�', + align: 'center', + width: 100, + dataIndex: 'sequenceNumber' + }, + { + title: '鍔犲伐浠舵暟', + align: 'center', + width: 80, + dataIndex: 'processCount' + }, + { + title: '鎸佺画鏃堕棿', + dataIndex: 'duration', + align: 'center', + scopedSlots: { customRender: 'duration' }, + width: 110 + }, + { + title: '鏃ユ湡', + dataIndex: 'theDate', + align: 'center', + width: 110 + } + ], + dataSource: [], + driveTypeList: [] + } + }, + props: { nodeTree: '', Type: '', nodePeople: '' }, + created() { + 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.getDriveTypeByApi() + }, + 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() + } + }, + 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' + } + } + }, + methods: { + dateParamChange(value) { + this.dates = value + console.log('value', value) + this.queryParam.startTime = moment(this.dates[0]).format('YYYYMMDD') + this.queryParam.endTime = moment(this.dates[1]).format('YYYYMMDD') + }, + + exportExcel() { + $('#EfficiencyShift').table2excel({ + exclude: '.noExl', + name: 'Excel Document Name', + filename: '璁惧鍔犲伐宸ヤ欢鎶ヨ〃', + exclude_img: true, + fileext: '.xls', + exclude_links: true, + exclude_inputs: true + }) + }, + + searchQuery() { + if (this.dates != '') { + 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 = '' + } + this.queryParam.pageNo = 1 + this.loadData() + } else { + // this.$message.warning("璇烽�夋嫨鏃堕棿") + this.$notification.warning({ + message: '娑堟伅', + description: '璇烽�夋嫨鏃堕棿' + }) + } + // this.onClearSelected() + }, + + searchReset() { + this.queryParam = { + pageSize: 20, + pageNo: 1 + } + this.dates = [] + this.loadData() + }, + + loadData() { + getAction(this.url.list, this.queryParam).then(res => { + if (res.success) { + this.dataSource = res.result + } + }) + }, + + /** + * 璋冪敤鎺ュ彛鑾峰彇鎺у埗绯荤粺绫诲瀷 + */ + getDriveTypeByApi() { + api.getDriveTypeApi().then((res) => { + this.driveTypeList = res.result.map(item => item.value) + }) + }, + + /** + * 鏍煎紡鍖栨椂闂� + * @param seconds 绉掓暟 + * @returns '' 鏍煎紡鍖栧悗鏃堕棿瀛楃涓� + */ + getFormattedTime(seconds) { + var hours = Math.floor(seconds / 3600) + var minutes = Math.floor((seconds % 3600) / 60) + var secs = seconds % 60 + + if (hours === 0) { + if (minutes === 0) { + return secs === 0 ? 0 : `${secs}绉抈 + } else { + if (secs === 0) { + return `${minutes}鍒哷 + } + return `${minutes}鍒� ${secs}绉抈 + } + } else { + if (minutes === 0 && secs === 0) { + return `${hours}灏忔椂` + } else if (minutes !== 0 && secs === 0) { + return `${hours}灏忔椂 ${minutes}鍒哷 + } + } + return `${hours}灏忔椂 ${minutes}鍒� ${secs}绉抈 + }, + + /** + * 鍒嗛〉鍣ㄩ〉鏁板彂鐢熸敼鍙樻椂瑙﹀彂 + * @param page 鏀瑰彉鍚庨〉鏁� + * @param pageSize 鏀瑰彉鍚庢瘡椤靛睍绀烘暟鎹潯鏁� + */ + handlePageNoChange(page, pageSize) { + this.queryParam.pageNo = page + this.loadData() + }, + + /** + * 鍒嗛〉鍣ㄦ瘡椤靛睍绀烘暟鎹潯鏁板彂鐢熸敼鍙樻椂瑙﹀彂 + * @param current 鏀瑰彉鍚庨〉鏁� + * @param size 鏀瑰彉鍚庢瘡椤靛睍绀烘暟鎹潯鏁� + */ + handlePageSizeChange(current, size) { + 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 + ) + } + } + } +</script> +<style scoped> + .table2 { + width: 100%; + height: 100%; + overflow: auto; + } + + .pagination { + display: flex; + justify-content: end; + margin: 20px 0; + } + + @media screen and (min-width: 1920px) { + #EfficiencyShift { + height: 670px !important; + overflow: scroll; + } + } + + @media screen and (min-width: 1680px) and (max-width: 1920px) { + #EfficiencyShift { + height: 670px !important; + overflow: scroll; + } + } + + @media screen and (min-width: 1400px) and (max-width: 1680px) { + #EfficiencyShift { + height: 522px !important; + overflow: scroll; + } + } + + @media screen and (min-width: 1280px) and (max-width: 1400px) { + #EfficiencyShift { + height: 414px !important; + overflow: scroll; + } + } + + @media screen and (max-width: 1280px) { + #EfficiencyShift { + height: 414px !important; + overflow: scroll; + } + } + + .identifyingclass { + width: 55px; + height: 15px; + display: inline-block + } + + .dataContent { + white-space: nowrap; + /*margin: 0;*/ + /*border: none;*/ + 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 .fixed th { + width: 50px; + } + + .dataContent .thead th { + background-color: #fafafa; + text-align: center; + height: 30px; + padding: 5px; + } + + .dataContent .notfixed th { + width: auto; + } + + /*.dataContent tr td {*/ + /*height: 35px*/ + /*}*/ + + .dataContent .mathData td { + padding: 10px; + /*display: none;*/ + } + + .dataContent .mathData .td { + /*background-color: #ff9bd2;*/ + display: inline-block; + padding: 10px; + } + + .dataContent .mathData .tdd { + /*display: none;*/ + } + +</style> \ No newline at end of file diff --git a/src/views/mdc/base/modules/HolidayManagement/HolidayManagementModal.vue b/src/views/mdc/base/modules/HolidayManagement/HolidayManagementModal.vue index 4e0393b..3c952d6 100644 --- a/src/views/mdc/base/modules/HolidayManagement/HolidayManagementModal.vue +++ b/src/views/mdc/base/modules/HolidayManagement/HolidayManagementModal.vue @@ -7,7 +7,7 @@ <a-col :span="24"> <a-form-item label="璁惧缁�" :labelCol="labelColLong" :wrapperCol="wrapperColLong"> <a-input-search :readOnly="true" v-decorator="['equipmentIds', validatorRules.equipmentIds]" - @search="deviceSearch" enter-button/> + @search="deviceSearch" enter-button placeholder="璇烽�夋嫨璁惧"/> </a-form-item> </a-col> </a-row> @@ -36,7 +36,7 @@ </a-form> </a-spin> <holiday-management-modal-list ref="deviceRepairListModel" @sendSelectionRows="getDeviceRows"></holiday-management-modal-list> - + <select-device-modal ref="selectDeviceModal" @selectFinished="selectOK" :title="'閫夋嫨璁惧'"/> </a-modal> </template> @@ -53,10 +53,11 @@ import { duplicateCheck } from '@/api/api' + import SelectDeviceModal from '../../../../system/modules/SelectDeviceModal' export default { name: 'HolidayManagementModal', - components: {HolidayManagementModalList}, + components: { SelectDeviceModal, HolidayManagementModalList}, props: {}, data() { return { @@ -184,9 +185,10 @@ // }) }, deviceSearch() { - this.$refs.deviceRepairListModel.openPage() - this.$refs.deviceRepairListModel.title = '閫夋嫨璁惧' - this.$refs.deviceRepairListModel.disableSubmit = false + this.$refs.selectDeviceModal.visible = true + this.$refs.selectDeviceModal.selectedRowKeys = [] + this.$refs.selectDeviceModal.selectedRows = [] + this.$refs.selectDeviceModal.checkedKeys = this.form.getFieldValue('equipmentIds') ? this.form.getFieldValue('equipmentIds').split(',') : [] }, //绾ц仈妗唎nChange浜嬩欢 // onChange(value) { @@ -322,6 +324,22 @@ }, checkboxChange(e) { this.checked = e.target.checked + }, + + /** + * 閫夋嫨宸叉湁璁惧鍚庣偣鍑荤‘瀹氭椂瑙﹀彂 + * @param data 宸查�夋嫨鐨勮澶� + */ + selectOK(data) { + // let params = {} + // params.equipmentIdList = [] + // for (var a = 0; a < data.length; a++) { + // params.equipmentIdList.push(data[a]) + // } + console.log('data=', data) + this.form.setFieldsValue({ + equipmentIds: data.join(',') + }) } } } diff --git a/src/views/mdc/base/modules/OEEAnalysis/OEEAnalysisList.vue b/src/views/mdc/base/modules/OEEAnalysis/OEEAnalysisList.vue index 7331180..fd2560d 100644 --- a/src/views/mdc/base/modules/OEEAnalysis/OEEAnalysisList.vue +++ b/src/views/mdc/base/modules/OEEAnalysis/OEEAnalysisList.vue @@ -17,26 +17,26 @@ /> </a-form-item> </a-col> - <a-col :md="5" :sm="5" :xs="5"> - <a-form-item label="鐝埗"> - <a-select v-model="queryParam.shiftId" placeholder="璇烽�夋嫨鐝埗" - @change="initShiftSubList" :allowClear="allowClear"> - <a-select-option v-for="(em,index) in shiftList" :key="index" :value="em.value"> - {{ em.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 v-model="queryParam.shiftSubId" placeholder="璇烽�夋嫨鐝" @change="initShiftSubListChange" - :allowClear="allowClearSu"> - <a-select-option v-for="(em,index) in shiftSubList" :key="index" :value="em.value"> - {{ em.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 v-model="queryParam.shiftId" placeholder="璇烽�夋嫨鐝埗"--> + <!--@change="initShiftSubList" :allowClear="allowClear">--> + <!--<a-select-option v-for="(em,index) in shiftList" :key="index" :value="em.value">--> + <!--{{ em.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 v-model="queryParam.shiftSubId" placeholder="璇烽�夋嫨鐝" @change="initShiftSubListChange"--> + <!--:allowClear="allowClearSu">--> + <!--<a-select-option v-for="(em,index) in shiftSubList" :key="index" :value="em.value">--> + <!--{{ em.label }}--> + <!--</a-select-option>--> + <!--</a-select>--> + <!--</a-form-item>--> + <!--</a-col>--> <a-col :md="8" :sm="8" :xs="8"> <a-space> @@ -54,8 +54,7 @@ <div class="container" id="EfficiencyShift" style="margin-top: 20px;"> <div class="table2"> <a-table :columns="columns" :dataSource="dataSource.records" :pagination="false" bordered - :scroll="{ x: 1500, y: false }"> - + :scroll="{ x: 3200, y: false }"> </a-table> </div> </div> @@ -67,7 +66,7 @@ :default-current="1" :current=+queryParam.pageNo show-size-changer - :pageSizeOptions="['10','15','20','25']" + :pageSizeOptions="['20','30','40','50']" @change="handlePageNoChange" @showSizeChange="handlePageSizeChange" /> @@ -96,7 +95,7 @@ dates: [moment().subtract('month', 1), moment().subtract('month', 1)], identifying: [], queryParam: { - pageSize: 10, + pageSize: 20, pageNo: 1 }, queryParamEquip: {}, @@ -117,22 +116,22 @@ align: 'center', customRender: function(t, r, index) { return parseInt(index) + 1 - }, - fixed: 'left' + } + // fixed: 'left' }, { title: '璁惧缁熶竴缂栧彿', align: 'center', dataIndex: 'equipmentId', - width: 120, - fixed: 'left' + width: 120 + // fixed: 'left' }, { title: '璁惧鍚嶇О', align: 'center', - width: 150, - dataIndex: 'equipmentName', - fixed: 'left' + width: 200, + dataIndex: 'equipmentName' + // fixed: 'left' }, { title: '璁惧鍨嬪彿', @@ -149,8 +148,9 @@ { title: '鐝', align: 'center', - width: 80, - dataIndex: 'shift' + width: 300, + dataIndex: 'shift', + ellipsis: true, }, { title: '姣忕彮灏忔椂', @@ -410,18 +410,11 @@ }, searchReset() { - this.typeTree = this.queryParam.typeTree - this.typeParent = this.queryParam.parentId - this.typeEquipment = this.queryParam.equipmentId this.queryParam = { - pageSize: 10, + pageSize: 20, pageNo: 1 } this.dates = [] - this.shiftSubList = [] - this.queryParam.typeTree = this.typeTree - this.queryParam.parentId = this.typeParent - this.queryParam.equipmentId = this.typeEquipment this.loadData() }, diff --git a/src/views/mdc/base/modules/TorqueconfigurationList/TorqueconfigurationModal.vue b/src/views/mdc/base/modules/TorqueconfigurationList/TorqueconfigurationModal.vue index 2fab0bc..26e2386 100644 --- a/src/views/mdc/base/modules/TorqueconfigurationList/TorqueconfigurationModal.vue +++ b/src/views/mdc/base/modules/TorqueconfigurationList/TorqueconfigurationModal.vue @@ -7,7 +7,7 @@ <a-col :span="24"> <a-form-item label="璁惧缁�" :labelCol="labelColLong" :wrapperCol="wrapperColLong"> <a-input-search :readOnly="true" v-decorator="['equipmentIds', validatorRules.equipmentIds]" - @search="deviceSearch" enter-button/> + @search="deviceSearch" enter-button placeholder="璇烽�夋嫨璁惧"/> </a-form-item> </a-col> </a-row> @@ -15,27 +15,27 @@ <a-col :span="12"> <a-form-item label="鏃堕棿" :labelCol="labelCol" :wrapperCol="wrapperCol"> <j-date :show-time="true" date-format="YYYY-MM-DD HH:mm:ss" placeholder="璇烽�夋嫨鏃堕棿" - v-decorator="['torqueDate', validatorRules.torqueDate]"></j-date> + v-decorator="['torqueDate', validatorRules.torqueDate]"></j-date> </a-form-item> </a-col> <a-col :span="12"> <a-form-item label="鎵煩鍊�" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-input-number :min="0" :disabled="disableSubmit" placeholder="璇疯緭鍏ユ壄鐭╁��" - v-decorator="['torqueValue', validatorRules.torqueValue]"/> + v-decorator="['torqueValue', validatorRules.torqueValue]"/> </a-form-item> </a-col> </a-row> <a-row :gutter="24"> <a-col :span="24"> - <a-form-item label="澶囨敞" :labelCol="labelColLong" :wrapperCol="wrapperColLong"> - <a-textarea :maxLength="20" v-decorator="['notes', validatorRules.notes]" placeholder="璇疯緭鍏ュ娉�" ></a-textarea> - </a-form-item> + <a-form-item label="澶囨敞" :labelCol="labelColLong" :wrapperCol="wrapperColLong"> + <a-textarea :maxLength="20" v-decorator="['notes', validatorRules.notes]" + placeholder="璇疯緭鍏ュ娉�"></a-textarea> + </a-form-item> </a-col> </a-row> </a-form> </a-spin> - <torqueconfiguration-modal-list ref="deviceRepairListModel" @sendSelectionRows="getDeviceRows"></torqueconfiguration-modal-list> - + <select-device-modal ref="selectDeviceModal" @selectFinished="selectOK" :title="'閫夋嫨璁惧'"/> </a-modal> </template> @@ -52,22 +52,23 @@ import { duplicateCheck } from '@/api/api' + import SelectDeviceModal from '../../../../system/modules/SelectDeviceModal' export default { name: 'TorqueconfigurationModal', - components: {TorqueconfigurationModalList}, + components: { SelectDeviceModal }, props: {}, data() { return { - mesag:21, - readOnly:true, + mesag: 21, + readOnly: true, title: '', visible: false, show: false, model: {}, checked: false, - startData:"", - endData:"", + startData: '', + endData: '', labelCol: { xs: { span: 24 @@ -103,30 +104,30 @@ confirmLoading: false, form: this.$form.createForm(this), validatorRules: { - equipmentIds:{ - rules:[ + equipmentIds: { + rules: [ { - required:true, - message: "璇烽�夋嫨璁惧" - }, - ], + required: true, + message: '璇烽�夋嫨璁惧' + } + ] }, - torqueDate:{ - rules:[ + torqueDate: { + rules: [ { - required:true, - message: "璇烽�夋嫨鏃堕棿" - }, - ], + required: true, + message: '璇烽�夋嫨鏃堕棿' + } + ] }, - torqueValue:{ - rules:[ + torqueValue: { + rules: [ { - required:true, - message: "璇疯緭鍏ユ壄鐭╁��" - }, - ], - }, + required: true, + message: '璇疯緭鍏ユ壄鐭╁��' + } + ] + } }, url: { @@ -158,21 +159,21 @@ // // this.endData = dateStrings[1]; // // console.log(this.startData,this.endData); // }, - onChangeEnd(dates, dateStrings){ - this.endTime = dateStrings[0]; + onChangeEnd(dates, dateStrings) { + this.endTime = dateStrings[0] }, getDeviceRows(val) { - var equipmentIds; - for(var i = 0;i<val.length;i++){ + var equipmentIds + for (var i = 0; i < val.length; i++) { if (i == 0) { - equipmentIds = val[i].equipmentId; + equipmentIds = val[i].equipmentId } else { - equipmentIds = equipmentIds + "," + val[i].equipmentId; + equipmentIds = equipmentIds + ',' + val[i].equipmentId } } // console.log("========",equipmentIds); this.form.setFieldsValue({ - equipmentIds: equipmentIds, + equipmentIds: equipmentIds }) // this.form.setFieldsValue({ // equipmentId: val.equipmentId, @@ -184,9 +185,10 @@ // }) }, deviceSearch() { - this.$refs.deviceRepairListModel.openPage() - this.$refs.deviceRepairListModel.title = '閫夋嫨璁惧' - this.$refs.deviceRepairListModel.disableSubmit = false + this.$refs.selectDeviceModal.visible = true + this.$refs.selectDeviceModal.selectedRowKeys = [] + this.$refs.selectDeviceModal.selectedRows = [] + this.$refs.selectDeviceModal.checkedKeys = this.form.getFieldValue('equipmentIds') ? this.form.getFieldValue('equipmentIds').split(',') : [] }, //绾ц仈妗唎nChange浜嬩欢 // onChange(value) { @@ -219,7 +221,7 @@ this.model = Object.assign({}, record) this.visible = true this.$nextTick(() => { - this.form.setFieldsValue(pick(this.model, 'equipmentIds', 'equipmentName', 'mdcRepairType', 'startTime', 'endTime', + this.form.setFieldsValue(pick(this.model, 'equipmentIds', 'equipmentName', 'mdcRepairType', 'startTime', 'endTime' )) }) }, @@ -252,36 +254,36 @@ // // this.endTime = '' // that.confirmLoading = false // }else{ - let obj - if (!this.model.id) { - obj = postAction(this.url.add, formData) - } else { - obj = requestPut(this.url.edit, formData, { - id: this.model.id - }) - } - obj.then((res) => { - if (res.success) { - // that.$message.success("娣诲姞鎴愬姛") - that.$notification.success({ - message:'娑堟伅', - description:"娣诲姞鎴愬姛" - }); - // that.$message.success(res.message) - that.$emit('ok', res.result) - } else { - // that.$message.warning(res.message) - that.$notification.warning({ - message:'娑堟伅', - description:res.message - }); - } - }).finally(() => { - that.confirmLoading = false - that.close() + let obj + if (!this.model.id) { + obj = postAction(this.url.add, formData) + } else { + obj = requestPut(this.url.edit, formData, { + id: this.model.id + }) + } + obj.then((res) => { + if (res.success) { + // that.$message.success("娣诲姞鎴愬姛") + that.$notification.success({ + message: '娑堟伅', + description: '娣诲姞鎴愬姛' + }) + // that.$message.success(res.message) + that.$emit('ok', res.result) + } else { + // that.$message.warning(res.message) + that.$notification.warning({ + message: '娑堟伅', + description: res.message }) } - // } + }).finally(() => { + that.confirmLoading = false + that.close() + }) + } + // } // } }) @@ -322,7 +324,24 @@ }, checkboxChange(e) { this.checked = e.target.checked + }, + + /** + * 閫夋嫨宸叉湁璁惧鍚庣偣鍑荤‘瀹氭椂瑙﹀彂 + * @param data 宸查�夋嫨鐨勮澶� + */ + selectOK(data) { + // let params = {} + // params.equipmentIdList = [] + // for (var a = 0; a < data.length; a++) { + // params.equipmentIdList.push(data[a]) + // } + console.log('data=', data) + this.form.setFieldsValue({ + equipmentIds: data.join(',') + }) } + } } </script> @@ -346,7 +365,8 @@ .ant-tabs-content .ant-form-item { margin-bottom: 0px; } - /deep/ .ant-input-number{ - width: 100%!important; + + /deep/ .ant-input-number { + width: 100% !important; } </style> diff --git a/src/views/mdc/base/modules/UnplannedDowntimemManager/UnplannedDowntimemManagerModal.vue b/src/views/mdc/base/modules/UnplannedDowntimemManager/UnplannedDowntimemManagerModal.vue index 2a2ffdb..9b68f1e 100644 --- a/src/views/mdc/base/modules/UnplannedDowntimemManager/UnplannedDowntimemManagerModal.vue +++ b/src/views/mdc/base/modules/UnplannedDowntimemManager/UnplannedDowntimemManagerModal.vue @@ -7,7 +7,7 @@ <a-col :span="24"> <a-form-item label="璁惧缁�" :labelCol="labelColLong" :wrapperCol="wrapperColLong"> <a-input-search :readOnly="true" v-decorator="['equipmentIds', validatorRules.equipmentIds]" - @search="deviceSearch" enter-button/> + @search="deviceSearch" enter-button placeholder="璇烽�夋嫨璁惧"/> </a-form-item> </a-col> </a-row> @@ -43,15 +43,13 @@ </a-row> </a-form> </a-spin> - <plan-downtime-maintenance-modal-list ref="deviceRepairListModel" @sendSelectionRows="getDeviceRows"></plan-downtime-maintenance-modal-list> - + <select-device-modal ref="selectDeviceModal" @selectFinished="selectOK" :title="'閫夋嫨璁惧'"/> </a-modal> </template> <script> import moment from 'moment' import pick from 'lodash.pick' - import PlanDowntimeMaintenanceModalList from './UnplannedDowntimemManagerModalList' import JDate from '../deviceRepair/JDate' import { getAction, @@ -61,10 +59,11 @@ import { duplicateCheck } from '@/api/api' + import SelectDeviceModal from '../../../../system/modules/SelectDeviceModal' export default { name: 'UnplannedDowntimemManagerModal', - components: {PlanDowntimeMaintenanceModalList,JDate}, + components: { SelectDeviceModal,JDate}, props: {}, data() { return { @@ -201,9 +200,10 @@ // }) }, deviceSearch() { - this.$refs.deviceRepairListModel.openPage() - this.$refs.deviceRepairListModel.title = '閫夋嫨璁惧' - this.$refs.deviceRepairListModel.disableSubmit = false + this.$refs.selectDeviceModal.visible = true + this.$refs.selectDeviceModal.selectedRowKeys = [] + this.$refs.selectDeviceModal.selectedRows = [] + this.$refs.selectDeviceModal.checkedKeys = this.form.getFieldValue('equipmentIds') ? this.form.getFieldValue('equipmentIds').split(',') : [] }, //绾ц仈妗唎nChange浜嬩欢 // onChange(value) { @@ -336,6 +336,22 @@ }, checkboxChange(e) { this.checked = e.target.checked + }, + + /** + * 閫夋嫨宸叉湁璁惧鍚庣偣鍑荤‘瀹氭椂瑙﹀彂 + * @param data 宸查�夋嫨鐨勮澶� + */ + selectOK(data) { + // let params = {} + // params.equipmentIdList = [] + // for (var a = 0; a < data.length; a++) { + // params.equipmentIdList.push(data[a]) + // } + console.log('data=', data) + this.form.setFieldsValue({ + equipmentIds: data.join(',') + }) } } } diff --git a/src/views/mdc/base/modules/WorkshopSignage/EquipmentDetailModal.vue b/src/views/mdc/base/modules/WorkshopSignage/EquipmentDetailModal.vue index 4e68f1a..7a76659 100644 --- a/src/views/mdc/base/modules/WorkshopSignage/EquipmentDetailModal.vue +++ b/src/views/mdc/base/modules/WorkshopSignage/EquipmentDetailModal.vue @@ -9,7 +9,6 @@ cancelText="鍏抽棴" wrap-class-name="full-modal" centered - :closable="false" :footer="null" > <div @@ -230,13 +229,24 @@ v-show="mdcDriveTypeParamConfigList != null" v-if="driverType != 'PLC'" :column="4" + class="operationData" > <a-descriptions-item v-for="(item,id) in mdcDriveTypeParamConfigList " :key="item.id" :label="item.chineseName" - >{{item.value}} + > + <a-popover v-if="item.value&&item.value.length>18"> + <template slot="content"> + {{item.value}} + </template> + {{item.value}} + </a-popover> + + <template v-else> + {{item.value}} + </template> </a-descriptions-item> </a-descriptions> @@ -254,16 +264,17 @@ <!-->{{item.value}}</a-descriptions-item>--> <!--</a-descriptions>--> - <a-descriptions - title="鐗堟湰淇℃伅 for lsv2" - v-if="driverType == 'LSV2'" - :column="4" - > - <a-descriptions-item label="NC鐗堟湰">{{resultData.nCVersion}}</a-descriptions-item> - <a-descriptions-item label="TNC鐗堟湰">{{resultData.tNCVersion}}</a-descriptions-item> - <a-descriptions-item label="OPT鐗堟湰">{{resultData.oPTVersion}}</a-descriptions-item> - <a-descriptions-item label="PLC鐗堟湰">{{resultData.pLCVersion}}</a-descriptions-item> - </a-descriptions> + <!--<a-descriptions--> + <!--title="鐗堟湰淇℃伅 for lsv2"--> + <!--v-if="driverType == 'LSV2'"--> + <!--:column="4"--> + <!--class="lsv2Data"--> + <!-->--> + <!--<a-descriptions-item label="NC鐗堟湰">{{resultData.ncversion}}</a-descriptions-item>--> + <!--<a-descriptions-item label="TNC鐗堟湰">{{resultData.tncversion}}</a-descriptions-item>--> + <!--<a-descriptions-item label="OPT鐗堟湰">{{resultData.optversion}}</a-descriptions-item>--> + <!--<a-descriptions-item label="PLC鐗堟湰">{{resultData.plcversion}}</a-descriptions-item>--> + <!--</a-descriptions>--> </td> </tr> @@ -287,10 +298,11 @@ postAction } from '@/api/manage' import { ajaxGetDictItems, getDictItemsFromCache, duplicateCheck } from '@/api/api' + import Template1 from '../../../../jeecg/JVxeDemo/layout-demo/Template1' export default { name: 'EqumentDetaiModal', - components: {}, + components: { Template1 }, props: {}, data() { return { @@ -471,7 +483,7 @@ show: false }, axisTick: { - show: true, + show: false, length: 20, splitNumber: 1, lineStyle: { @@ -526,7 +538,10 @@ }, pointer: { show: true, - width: 3 + width: 3, + itemStyle:{ + color:'#fff' + } }, data: [{ name: '', @@ -724,7 +739,7 @@ show: false }, axisTick: { - show: true, + show: false, length: 20, splitNumber: 1, lineStyle: { @@ -779,7 +794,10 @@ }, pointer: { show: true, - width: 3 + width: 3, + itemStyle:{ + color:'#fff' + } }, data: [{ name: '', @@ -874,7 +892,7 @@ type: 'gauge', radius: '80%', min: 0, //鏈�灏忓埢搴� - max: 300, //鏈�澶у埢搴� + max: 100, //鏈�澶у埢搴� splitNumber: 10, //鍒诲害鏁伴噺 startAngle: 225, endAngle: -45, @@ -977,7 +995,7 @@ show: false }, axisTick: { - show: true, + show: false, length: 20, splitNumber: 1, lineStyle: { @@ -1001,12 +1019,12 @@ radius: '52.5%', z: 3, startAngle: 225, - max: 300, + max: 100, endAngle: -45, axisLine: { lineStyle: { color: [ - [_this.spindleload / 300, '#31F3FF'], // 鍔ㄦ�� + [_this.spindleload / 100, '#31F3FF'], // 鍔ㄦ�� [1, '#185363'] ], width: 4 @@ -1032,7 +1050,10 @@ }, pointer: { show: true, - width: 3 + width: 3, + itemStyle:{ + color:'#fff' + } }, data: [{ name: '', @@ -1230,7 +1251,7 @@ show: false }, axisTick: { - show: true, + show: false, length: 20, splitNumber: 1, lineStyle: { @@ -1285,7 +1306,10 @@ }, pointer: { show: true, - width: 3 + width: 3, + itemStyle:{ + color:'#fff' + } }, data: [{ name: '', @@ -1419,7 +1443,7 @@ padding-bottom: 0; margin: 0; background-color: #4a4a48 !important; - opacity: 0.5; + opacity: 0.9; } /deep/ .ant-modal-content { display: flex; @@ -1440,7 +1464,7 @@ /*background: -ms-linear-gradient(left, rgba(0, 0, 0, 0.66) 0%, rgba(0, 0, 0, 0.4) 100%);*/ /*background: linear-gradient(to right, rgba(0, 0, 0, 0.66) 0%, rgba(0, 0, 0, 0.4) 100%);*/ background-color: #312c2c; - opacity: 0.7; + opacity: 1; } /deep/ .ant-modal-close { @@ -1535,4 +1559,19 @@ .ant-tabs-content .ant-form-item { margin-bottom: 0px; } + + /deep/ .ant-descriptions-item-label{ + width: 6.7vw; + text-align: right; + margin-right: 10px; + } + + /deep/ .operationData .ant-descriptions-item-content, + .lsv2Data .ant-descriptions-item-content + { + width: 130px; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + } </style> diff --git a/src/views/mdc/base/modules/alarmAnalysis/alarmAnalysisMain.vue b/src/views/mdc/base/modules/alarmAnalysis/alarmAnalysisMain.vue index e923eb5..87106d7 100644 --- a/src/views/mdc/base/modules/alarmAnalysis/alarmAnalysisMain.vue +++ b/src/views/mdc/base/modules/alarmAnalysis/alarmAnalysisMain.vue @@ -19,47 +19,68 @@ </div> <div id="DeviceList"> <div class="openRateTrendDg"> - <div id="Efficiency" class="container" style="margin-top: 20px;"> - <div class="table2"> - <table class="dataContent table" border="1" cellspacing="0" cellpadding="0" - style="white-space: nowrap;text-align: left;"> - <thead> - <tr class="thead fixed equipname"> - <th class="thgu dong1 name" rowspan="2" style="min-width: 150px; max-width: 150px;width: 150px;">鎶ヨ鍙� - </th> - <th class="thgu dong2 name" rowspan="2" style="min-width: 150px; max-width: 150px;width: 150px;"> - 鍑虹幇娆℃暟 - </th> - <th class="thgu dong3 name" rowspan="2" style="min-width: 150px; max-width: 150px;width: 150px;"> - 鍚堣鎸佺画鏃堕棿锛堢锛� - </th> - <th class="thgu dong4 name" rowspan="2" style="min-width: 100px; max-width: 100px;width: 100px;"> - 鎶ヨ淇℃伅 - </th> - <!--<template v-for="(tableHead, index) in tableHeads">--> - <!--<th class="timeth" :colspan="checkedList.length">{{tableHead}}</th>--> - <!--</template>--> - </tr> - </thead> - <tbody> - <tr class="mathData" v-for="(item, index) in dataList" @click="TableDraw(index,item)"> - <td class="tdgu kaitou">{{item.alarmCode}}</td> - <td class="tdgu1 kaitou">{{item.count}}</td> - <td class="tdgu2 kaitou">{{item.timeCount}}</td> - <td class="tdgu3 kaitou">{{item.alarmContent}}</td> - <!--<template v-for="(tableHead, index) in item.dataList">--> - <!--<td :style="{background:tableHead.color }">{{tableHead.utilizationRate | numFilter}}</td>--> - <!--</template>--> - </tr> - </tbody> - </table> - </div> + <!--<div id="Efficiency" class="container">--> + <!--<div class="table2">--> + <!--<table class="dataContent table" border="1" cellspacing="0" cellpadding="0"--> + <!--style="white-space: nowrap;text-align: left;">--> + <!--<thead>--> + <!--<tr class="thead fixed equipname">--> + <!--<th class="thgu dong1 name" rowspan="2" style="min-width: 150px; max-width: 150px;width: 150px;">鎶ヨ鍙�--> + <!--</th>--> + <!--<th class="thgu dong2 name" rowspan="2" style="min-width: 150px; max-width: 150px;width: 150px;">--> + <!--鍑虹幇娆℃暟--> + <!--</th>--> + <!--<th class="thgu dong3 name" rowspan="2" style="min-width: 150px; max-width: 150px;width: 150px;">--> + <!--鍚堣鎸佺画鏃堕棿--> + <!--</th>--> + <!--<th class="thgu dong4 name" rowspan="2" style="min-width: 100px; max-width: 100px;width: 100px;">--> + <!--鎶ヨ淇℃伅--> + <!--</th>--> + <!--<!–<template v-for="(tableHead, index) in tableHeads">–>--> + <!--<!–<th class="timeth" :colspan="checkedList.length">{{tableHead}}</th>–>--> + <!--<!–</template>–>--> + <!--</tr>--> + <!--</thead>--> + <!--<tbody>--> + <!--<tr class="mathData" v-for="(item, index) in dataList" @click="TableDraw(index,item)">--> + <!--<td class="tdgu kaitou">{{item.alarmCode}}</td>--> + <!--<td class="tdgu1 kaitou">{{item.count}}</td>--> + <!--<td class="tdgu2 kaitou">{{getFormattedTime(item.timeCount)}}--> + <!--<!–<td class="tdgu2 kaitou">{{item.timeCount}}</td>–>--> + <!--<td class="tdgu3 kaitou">{{item.alarmContent}}</td>--> + <!--<!–<template v-for="(tableHead, index) in item.dataList">–>--> + <!--<!–<td :style="{background:tableHead.color }">{{tableHead.utilizationRate | numFilter}}</td>–>--> + <!--<!–</template>–>--> + <!--</tr>--> + <!--</tbody>--> + <!--</table>--> + <!--</div>--> + <!--</div>--> + <a-table :columns="columns" :data-source="dataList" bordered :pagination="false" :scroll="{y:210}" + :customRow="customRow" + rowKey="alarmCode" @expand="handleExpandChange" + > + <span slot="timeCount" slot-scope="text">{{getFormattedTime(text)}}</span> + <!--<a-table--> + <!--slot="expandedRowRender"--> + <!--slot-scope="row"--> + <!--:columns="innerColumns"--> + <!--:data-source="row.innerDataList"--> + <!--:pagination="false"--> + <!--rowKey="equipmentId"--> + <!--:loading="loading"--> + <!-->--> + <!--<span slot="duration" slot-scope="text">{{getFormattedTime(text)}}</span>--> + <!--</a-table>--> + </a-table> + </div> + + <a-spin :spinning="spinning"> + <div style="width: 100%;height: 100%;display: flex;"> + <div id="MdcEquipmentWarningPie" style="height: 100%;width: 35%;"></div> + <div id="MdcEquipmentWarningLine" style="height: 100%;width: 65%;"></div> </div> - </div> - <div style="width: 100%;height: 60%;display: flex;"> - <div id="MdcEquipmentWarningPie" style="height: 100%;width: 35%;"></div> - <div id="MdcEquipmentWarningLine" style="height: 100%;width: 65%;"></div> - </div> + </a-spin> </div> </div> </div> @@ -75,6 +96,34 @@ JeecgListMixin } from '@/mixins/JeecgListMixin' + const columns = [ + { title: '鎶ヨ鍙�', dataIndex: 'alarmCode', key: 'alarmCode', align: 'center' }, + { title: '鍑虹幇娆℃暟', dataIndex: 'count', key: 'count', align: 'center', sorter: (a, b) => b.count - a.count }, + { + title: '鍚堣鎸佺画鏃堕棿', + dataIndex: 'timeCount', + key: 'timeCount', + scopedSlots: { customRender: 'timeCount' }, + align: 'center', + sorter: (a, b) => b.timeCount - a.timeCount + }, + { title: '鎶ヨ淇℃伅', dataIndex: 'alarmContent', key: 'alarmContent', align: 'center' } + ] + + const innerColumns = [ + { title: '璁惧缂栧彿', dataIndex: 'equipmentId', key: 'equipmentId', align: 'center' }, + { title: '璁惧鍚嶇О', dataIndex: 'equipmentName', key: 'equipmentName', align: 'center' }, + { title: '鎶ヨ鏃堕棿', dataIndex: 'alarmTime', key: 'alarmTime', align: 'center' }, + { title: '缁撴潫鏃堕棿', dataIndex: 'endTime', key: 'endTime', align: 'center' }, + { + title: '鎸佺画鏃堕棿', + dataIndex: 'duration', + key: 'duration', + scopedSlots: { customRender: 'duration' }, + align: 'center' + } + ] + export default { // mixins: [JeecgListMixin], name: 'alarmAnalysisMain', @@ -84,6 +133,7 @@ dataSource: [], /* table鍔犺浇鐘舵�� */ loading: false, + spinning: false, typeTree: '', typeParent: 1, typeEquipment: 1, @@ -114,7 +164,10 @@ tableHeads: [], pieDate: [0], XData: [0], - YData: [0] + YData: [0], + columns, + innerColumns, + hasRequsetAlarmCodeList: [] } }, props: { nodeTree: '', Type: '', nodePeople: '' }, @@ -182,34 +235,35 @@ }, TableDraw(key, val) { let that = this + that.spinning = true that.queryParam.alarmCode = val.alarmCode console.log(this.queryParam) - that.pieDate = [] - that.XData = [] - that.YData = [] - getAction(that.url.alarmTrend, that.queryParam).then(res => { - if (res.success) { - for (var i = 0; i < res.result.equipmentCountList.length; i++) { - that.pieDate.push({ - name: res.result.equipmentCountList[i].key, - value: res.result.equipmentCountList[i].count + getAction(that.url.alarmTrend, that.queryParam) + .then(res => { + if (res.success) { + that.pieDate = res.result.equipmentCountList.map(item => { + return { + name: item.key, + value: item.count + } }) + that.XData = res.result.dateCountList.map(item => item.key) + that.YData = res.result.dateCountList.map(item => item.count) + + // this.tableHeads = res.result.dates + // this.dataList = res.result + // this.draw() + // this.checkSameData(this.dataList) + // this.checkSameData1(this.dataList) + // this.checkSameData2(this.dataList) + // this.combineCell(); + // this.initDeviceType(this.dataList) + that.drawWrin() } - for (var j = 0; j < res.result.dateCountList.length; j++) { - that.XData.push(res.result.dateCountList[j].key) - that.YData.push(res.result.dateCountList[j].count) - } - // this.tableHeads = res.result.dates - // this.dataList = res.result - // this.draw() - // this.checkSameData(this.dataList) - // this.checkSameData1(this.dataList) - // this.checkSameData2(this.dataList) - // this.combineCell(); - // this.initDeviceType(this.dataList) - that.drawWrin() - } - }) + }) + .finally(() => { + that.spinning = false + }) console.log(this.YData) }, @@ -343,6 +397,7 @@ if (res.success) { // this.tableHeads = res.result.dates this.dataList = res.result + this.hasRequsetAlarmCodeList = [] // this.draw() // this.checkSameData(this.dataList) // this.checkSameData1(this.dataList) @@ -359,7 +414,10 @@ title: { text: '鍚勮澶囧嚭鐜版鎶ヨ鐨勬瘮渚�', x: 'center', - y: 'bottom' + y: 'bottom', + textStyle: { + color: '#4FAEDC' + } }, tooltip: { trigger: 'item', @@ -371,14 +429,18 @@ radius: '60%', itemStyle: { normal: { - /*color: function (params) { - var colorList = ['#4169E1', '#A8A8A8']; - return colorList[params.dataIndex] - },*/ + color: function(params) { + var colorList = ['#5AB1EF', '#2EC7C9', '#B6A2DE', '#FFB980', '#D87A80', '#8D98B3'] + return colorList[params.dataIndex] + }, label: { show: true, - position: 'top', - formatter: '{b}\n{c}' + // position: 'top', + formatter: '{b}\n{c}', + color: function(params) { + var colorList = ['#5AB1EF', '#2EC7C9', '#B6A2DE', '#FFB980', '#D87A80', '#8D98B3'] + return colorList[params.dataIndex] + } } } }, @@ -392,7 +454,10 @@ title: { text: '姣忓ぉ鍑虹幇姝ゆ姤璀︾殑鏁伴噺璧板娍', x: 'center', - y: 'bottom' + y: 'bottom', + textStyle: { + color: '#4FAEDC' + } }, tooltip: { trigger: 'axis' @@ -405,13 +470,29 @@ data: this.XData /*axisLabel :{ interval:0 - }*/ + }*/, + axisLine: { + //x杞寸嚎鐨勯鑹蹭互鍙婂搴� + show: true, + lineStyle: { + width: 2, + color: '#4FAEDC' + } + } } ], yAxis: [ { type: 'value', - name: '娆℃暟' + name: '娆℃暟', + axisLine: { + //x杞寸嚎鐨勯鑹蹭互鍙婂搴� + show: true, + lineStyle: { + width: 2, + color: '#4FAEDC' + } + } } ], series: [ @@ -423,13 +504,126 @@ data: [ { type: 'max', name: '鏈�澶у��' }, { type: 'min', name: '鏈�灏忓��' } - ] + ], + label: { + color: '#fff' + } + }, + itemStyle: { + normal: { + color: '#2EC7C9' + } } } ] } equipmentWarningLine.setOption(equipmentWarningLineOption, true) + }, + + /** + * 鏍煎紡鍖栨椂闂� + * @param seconds 绉掓暟 + * @returns '' 鏍煎紡鍖栧悗鏃堕棿瀛楃涓� + */ + getFormattedTime(seconds) { + var hours = Math.floor(seconds / 3600) + var minutes = Math.floor((seconds % 3600) / 60) + var secs = seconds % 60 + + if (hours === 0) { + if (minutes === 0) { + return secs === 0 ? 0 : `${secs}绉抈 + } else { + if (secs === 0) { + return `${minutes}鍒哷 + } + return `${minutes}鍒� ${secs}绉抈 + } + } else { + if (minutes === 0 && secs === 0) { + return `${hours}灏忔椂` + } else if (minutes !== 0 && secs === 0) { + return `${hours}灏忔椂 ${minutes}鍒哷 + } + } + return `${hours}灏忔椂 ${minutes}鍒� ${secs}绉抈 + }, + + /** + * 鑷畾涔夎〃鏍艰瑙﹀彂 + * @param record 褰撳墠琛屼俊鎭� + * @param index 褰撳墠琛屼笅鏍� + * @returns {{on: {click: on.click}}} 杩斿洖瀵硅薄 + */ + customRow(record, index) { + return { + on: { + click: (event) => { + // 濡傛灉鐐瑰嚮鐨勪笉鏄睍寮�鍥炬爣鍖哄煙鍒欐覆鏌撳浘琛紝鐩稿弽鍒欑浉褰撲簬鐐瑰嚮灞曞紑鍥炬爣 + if (event.target.className !== 'ant-table-row-expand-icon-cell') { + this.TableDraw(index, record) + } else { + if (event.target.children && event.target.children.length > 0) event.target.children[0].click() + } + } + } + } + }, + + handleExpandChange(expanded, record) { + console.log('expanded', expanded, 'record', record) + let _this = this + // 褰撳睍寮�鏃惰嫢璇ヨ鏈灞曞紑杩囨墠浼氳姹傚悗鍙版暟鎹紝灞曞紑杩囩殑鏁版嵁浼氳缂撳瓨鏃犻渶閲嶅璇锋眰 + if (expanded && !this.hasRequsetAlarmCodeList.includes(record.alarmCode)) { + this.loading = true + setTimeout(() => { + _this.dataList.forEach(item => { + if (record.alarmCode === item.alarmCode) { + item.innerDataList = [ + { + equipmentId: '11234', + equipmentName: '绔嬩綋鏈哄簥', + alarmTime: 20, + endTime: 20, + duration: 123 + }, + { + equipmentId: '4213', + equipmentName: '鍗у鏈哄簥', + alarmTime: 312, + endTime: 31, + duration: 421 + } + ] + } + }) + this.loading = false + }, 1000) + this.hasRequsetAlarmCodeList.push(record.alarmCode) + } } + + // /** + // * 鑷畾涔夊睍寮�琛ㄦ牸鍥炬爣 + // * @param props 鍥炬爣灞炴�� + // * @returns {null} 鑻ヤ富琛ㄦ暟鎹笅鏃犳暟鎹垯涓嶆樉绀哄浘鏍� + // */ + // expandIcon(props){ + // console.log('props',props) + // if (props.record.innerDataList&&props.record.innerDataList.length>0){ + // if (props.expanded) { + // return <a style="margin-right:0px;color:#999" onClick={e=> { + // props.onExpand(props.record, e); + // }}><a-icon type="minus" /></a> + // } else{ + // return <a style="margin-right:0px;color:#999" onClick={e => { + // props.onExpand(props.record, e); + // }}><a-icon type="plus"/></a> + // } + // }else{ + // return null + // } + // } } } </script> @@ -591,28 +785,28 @@ @media screen and (min-width: 1920px) { #Efficiency { - height: 337px !important; + height: 258px !important; overflow: scroll; } } @media screen and (min-width: 1680px) and (max-width: 1920px) { #Efficiency { - height: 337px !important; + height: 258px !important; overflow: scroll; } } @media screen and (min-width: 1400px) and (max-width: 1680px) { #Efficiency { - height: 190px !important; + height: 160px !important; overflow: scroll; } } @media screen and (min-width: 1280px) and (max-width: 1400px) { #Efficiency { - height: 90px !important; + height: 60px !important; overflow: scroll; } } @@ -646,4 +840,26 @@ .efficiency_list #DeviceList { height: 90% !important; } + + /deep/ .ant-table-body .ant-table-row td { + padding-top: 10px; + padding-bottom: 10px; + cursor: pointer; + } + + /deep/ .ant-spin-nested-loading { + height: 55%; + } + + /deep/ .ant-spin-container { + height: 100%; + } + + /deep/ .ant-table.ant-table-bordered { + height: 265px; + } + + /deep/ .ant-table-scroll>.ant-table-placeholder { + height: 210px; + } </style> \ No newline at end of file diff --git a/src/views/mdc/base/modules/comparativeAnalysis/comparativeAnalysismain.vue b/src/views/mdc/base/modules/comparativeAnalysis/comparativeAnalysismain.vue index 9f19ba1..a3a6eed 100644 --- a/src/views/mdc/base/modules/comparativeAnalysis/comparativeAnalysismain.vue +++ b/src/views/mdc/base/modules/comparativeAnalysis/comparativeAnalysismain.vue @@ -1,58 +1,67 @@ <template> <div :bordered="false" class="device_list"> <div class="com_box"> - <!-- 鏌ヨ鍖哄煙 --> - <div style="width: 100%; background-color: #fff" class="table-page-search-wrapper"> - <a-form layout="inline" @keyup.enter.native="searchQuery"> - <a-row :gutter="24"> - <!--<a-col :md="5" :sm="5">--> + <!-- 鏌ヨ鍖哄煙 --> + <div style="width: 100%; background-color: #fff" class="table-page-search-wrapper"> + <a-form layout="inline" @keyup.enter.native="searchQuery"> + <a-row :gutter="24"> + <!--<a-col :md="5" :sm="5">--> <!--<a-form-item label="鍚嶇О">--> - <!--<a-input placeholder="杈撳叆璁惧鍚嶇О鏌ヨ" :readOnly="readOnly" v-model="queryParam.tierName"></a-input>--> + <!--<a-input placeholder="杈撳叆璁惧鍚嶇О鏌ヨ" :readOnly="readOnly" v-model="queryParam.tierName"></a-input>--> <!--</a-form-item>--> - <!--</a-col>--> - <a-col :md="5" :sm="5"> - <a-form-item label="椹卞姩绫诲瀷"> - <!--<j-dict-select-tag placeholder="璇烽�夋嫨椹卞姩绫诲瀷"--> - <!--:triggerChange="true" dictCode="mdc_driveType"--> - <!--v-model="queryParam.driveType" allow-clear/>--> - <a-auto-complete - v-model="queryParam.driveType" - :data-source="driveTypeList" - placeholder="椹卞姩绫诲瀷" - :filter-option="filterOption" - /> - </a-form-item> - </a-col> - <a-col :md="9" :sm="9" :xs="4"> - <a-form-item label="鏃堕棿"> - <a-range-picker @change="dateParamChange" v-model="dates" format="YYYYMMDD"/> - </a-form-item> - </a-col> - <a-col :md="2" :sm="3" :xs="3"> - <a-button type="primary" @click="searchQuery" icon="search">鏌ヨ</a-button> - </a-col> - <a-col :md="2" :sm="2" :xs="2"> - <a-button type="primary" @click="searchReset" icon="reload">閲嶇疆</a-button> - </a-col> - </a-row> - </a-form> + <!--</a-col>--> + <a-col :md="5" :sm="5"> + <a-form-item label="璁惧"> + <a-input-search :readOnly="true" v-model="queryParam.equipmentId" @search="deviceSearch" + placeholder='璇烽�夋嫨璁惧'/> + </a-form-item> + </a-col> + + <a-col :md="5" :sm="5"> + <a-form-item label="椹卞姩绫诲瀷"> + <!--<j-dict-select-tag placeholder="璇烽�夋嫨椹卞姩绫诲瀷"--> + <!--:triggerChange="true" dictCode="mdc_driveType"--> + <!--v-model="queryParam.driveType" allow-clear/>--> + <a-auto-complete + v-model="queryParam.driveType" + :data-source="driveTypeList" + placeholder="椹卞姩绫诲瀷" + :filter-option="filterOption" + /> + </a-form-item> + </a-col> + <a-col :md="6" :sm="6" :xs="6"> + <a-form-item label="鏃堕棿"> + <a-range-picker @change="dateParamChange" v-model="dates" format="YYYYMMDD"/> + </a-form-item> + </a-col> + <a-col> + <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> + <!-- table鍖哄煙-begin --> + <div id="DeviceList"> + <a-tabs :activeKey="activeKey" @change="tabChange" tabPosition="top"> + <a-tab-pane key="1" tab="鍥惧舰"> + <comparative-analysis-bar ref="AnalysisBar" :dataList='AnalysisBarList'></comparative-analysis-bar> + </a-tab-pane> + <a-tab-pane key="2" tab="浠〃" forceRender> + <comparative-analysis-gauge ref="AnalysisGauge" :dataList="AnalysisGauge"></comparative-analysis-gauge> + </a-tab-pane> + <a-tab-pane key="3" tab="楗煎浘" forceRender> + <conparative-analysis-pie ref="AnalysisPie" :dataList="AnalysisPie"></conparative-analysis-pie> + </a-tab-pane> + </a-tabs> + </div> + <!-- table鍖哄煙-end --> </div> - <!-- table鍖哄煙-begin --> - <div id="DeviceList"> - <a-tabs :activeKey="activeKey" @change="tabChange" tabPosition="top"> - <a-tab-pane key="1" tab="鍥惧舰"> - <comparative-analysis-bar ref="AnalysisBar" :dataList='AnalysisBarList'></comparative-analysis-bar> - </a-tab-pane> - <a-tab-pane key="2" tab="浠〃" forceRender> - <comparative-analysis-gauge ref="AnalysisGauge" :dataList="AnalysisGauge"></comparative-analysis-gauge> - </a-tab-pane> - <a-tab-pane key="3" tab="楗煎浘" forceRender> - <conparative-analysis-pie ref="AnalysisPie" :dataList="AnalysisPie"></conparative-analysis-pie> - </a-tab-pane> - </a-tabs> - </div> - <!-- table鍖哄煙-end --> - </div> + + <selectDeviceModal ref="selectDeviceModal" @selectFinished="selectOK" :title="'閫夋嫨璁惧'"></selectDeviceModal> </div> </template> @@ -67,7 +76,7 @@ getAction } from '@/api/manage' import comparativeAnalysisBar from './comparativeAnalysisBar' - import comparativeAnalysisGauge from'./comparativeAnalysisGauge' + import comparativeAnalysisGauge from './comparativeAnalysisGauge' import conparativeAnalysisPie from './conparativeAnalysisPie' import '@/components/table2excel/table2excel' import JInput from '@/components/jeecg/JInput' @@ -75,6 +84,8 @@ import Tooltip from 'ant-design-vue/es/tooltip' import { ajaxGetDictItems, getDictItemsFromCache, duplicateCheck } from '@/api/api' import api from '@/api/mdc' + import selectDeviceModal from '../../../../system/modules/SelectDeviceModal.vue' + export default { name: 'comparativeAnalysismain', // mixins: [JeecgListMixin], @@ -86,36 +97,39 @@ JDictSelectTag, JInput, JDate, - JEllipsis + JEllipsis, + selectDeviceModal }, - props: { nodeTree: '', Type:'',nodePeople: '' }, + props: { nodeTree: '', Type: '', nodePeople: '' }, data() { return { activeKey: '1', - typeTree:"", - typeParent:1, - typeEquipment:1, - AnalysisBarList:[], - AnalysisGauge:[], - AnalysisPie:[], + typeTree: '', + typeParent: 1, + typeEquipment: 1, + AnalysisBarList: [], + AnalysisGauge: [], + AnalysisPie: [], dates: [], - xianshi:"", - readOnly:true, - queryParam: {}, - queryParams:{}, - queryParamEquip:{}, - queryParamPeople:{}, - dataStartsoucre:[], - url: { - comparativeAnalysis:'/mdc/efficiencyReport/comparativeAnalysis' + xianshi: '', + readOnly: true, + queryParam: { + equipmentId: '' }, - AnalysisList:{}, - driveTypeList:[] + queryParams: {}, + queryParamEquip: {}, + queryParamPeople: {}, + dataStartsoucre: [], + url: { + comparativeAnalysis: '/mdc/efficiencyReport/comparativeAnalysis' + }, + AnalysisList: {}, + driveTypeList: [] } }, - watch:{ - Type(valmath){ - this.dataList = []; + watch: { + Type(valmath) { + this.dataList = [] this.queryParams.typeTree = valmath // console.log(this.queryParams.typeTree) }, @@ -123,8 +137,9 @@ if (JSON.stringify(val) != '{}') { if (val.equipmentId) { // this.$set(this.queryParam, 'tierName', val.title) - this.queryParamEquip.parentId = "" - this.queryParams.equipmentId = val.equipmentId + this.queryParamEquip.parentId = '' + // this.queryParams.equipmentId = val.equipmentId + this.queryParam.equipmentId = val.equipmentId this.queryParamEquip.equipmentId = val.equipmentId } else { // this.$set(this.queryParam, 'tierName', val.title) @@ -132,14 +147,13 @@ this.queryParams.equipmentId = '' } this.searchQuery() - } }, - nodePeople(val){ + nodePeople(val) { if (JSON.stringify(val) != '{}') { if (val.equipmentId) { // this.$set(this.queryParam, 'tierName', val.title) - this.queryParamEquip.parentId = "" + this.queryParamEquip.parentId = '' this.queryParams.equipmentId = val.equipmentId this.queryParamEquip.equipmentId = val.equipmentId } else { @@ -159,10 +173,10 @@ // console.log(v1,v2) this.queryParam.startTime = v2[0] this.queryParam.endTime = v2[1] - console.log(v2[0],v2[1]) + console.log(v2[0], v2[1]) }, - loadAnalysis(){ - getAction(this.url.comparativeAnalysis,this.queryParam).then(res => { + loadAnalysis() { + getAction(this.url.comparativeAnalysis, this.queryParam).then(res => { if (res.success) { this.AnalysisList = res.result this.AnalysisBarList = res.result.graphics @@ -175,44 +189,44 @@ this.loading = false }) }, - searchQuery(){ - if(this.dates&&this.dates.length>0){ + searchQuery() { + if (this.dates && this.dates.length > 0) { this.AnalysisList = [] this.AnalysisBarList = [] this.AnalysisGauge = [] this.AnalysisPie = [] - if(this.queryParams.typeTree == "1"){ - this.queryParams.parentId = this.queryParamEquip.parentId + if (this.queryParams.typeTree == '1') { + this.queryParams.parentId = this.queryParamEquip.parentId // this.queryParams.equipmentId = this.queryParamEquip.equipmentId - }else{ + } else { this.queryParams.parentId = this.queryParamEquip.parentId // this.queryParams.equipmentId = "" } this.AnalysisList = [] //鑾峰彇鏌ヨ鏉′欢 - this.queryParam.parentId = this.queryParams.parentId; - this.queryParam.equipmentId = this.queryParams.equipmentId; + this.queryParam.parentId = this.queryParams.parentId + // this.queryParam.equipmentId = this.queryParams.equipmentId this.queryParam.typeTree = this.queryParams.typeTree - getAction(this.url.comparativeAnalysis,this.queryParam).then((res) => { - if(res.success){ + getAction(this.url.comparativeAnalysis, this.queryParam).then((res) => { + if (res.success) { this.AnalysisList = res.result this.AnalysisBarList = res.result.graphics this.AnalysisGauge = res.result.meters this.AnalysisPie.push(res.result.pieCharts) - }else{ + } else { // this.$message.warning(res.message) this.$notification.warning({ - message:'娑堟伅', - description:res.message - }); + message: '娑堟伅', + description: res.message + }) } }).finally(() => { this.loading = false }) - }else{ + } else { this.$notification.warning({ - message:'鎻愮ず' , - description:'璇烽�夋嫨鏃堕棿' + message: '鎻愮ず', + description: '璇烽�夋嫨鏃堕棿' }) } @@ -222,70 +236,70 @@ this.AnalysisBarList = [] this.AnalysisGauge = [] this.AnalysisPie = [] - if(this.queryParams.typeTree == "1"){ + if (this.queryParams.typeTree == '1') { this.typeTree = this.queryParams.typeTree - this.typeParent = this.queryParams.parentId + this.typeParent = this.queryParams.parentId this.typeEquipment = this.queryParams.equipmentId this.queryParams = {} this.queryParam = {} this.dates = [] this.queryParams.typeTree = this.typeTree this.queryParams.parentId = this.typeParent - if(this.queryParams.parentId != ""){ - this.queryParams.equipmentId = "" - }else{ - if(this.queryParams.equipmentId == this.queryParamEquip.equipmentId){ - this.queryParams.equipmentId = this.typeEquipment - }else{ + if (this.queryParams.parentId != '') { + this.queryParams.equipmentId = '' + } else { + if (this.queryParams.equipmentId == this.queryParamEquip.equipmentId) { + this.queryParams.equipmentId = this.typeEquipment + } else { this.queryParams.equipmentId = this.queryParamEquip.equipmentId } } - getAction(this.url.comparativeAnalysis,this.queryParams).then((res) => { - if(res.success){ + getAction(this.url.comparativeAnalysis, this.queryParams).then((res) => { + if (res.success) { this.AnalysisList = res.result this.AnalysisBarList = res.result.graphics this.AnalysisGauge = res.result.meters this.AnalysisPie.push(res.result.pieCharts) - }else{ + } else { // this.$message.warning(res.message) this.$notification.warning({ - message:'娑堟伅', - description:res.message - }); + message: '娑堟伅', + description: res.message + }) } }).finally(() => { this.loading = false }) - }else{ + } else { this.typeTree = this.queryParams.typeTree - this.typeParent = this.queryParams.parentId + this.typeParent = this.queryParams.parentId this.typeEquipment = this.queryParams.equipmentId this.queryParams = {} this.queryParam = {} this.dates = [] this.queryParams.typeTree = this.typeTree this.queryParams.parentId = this.typeParent - if(this.queryParams.parentId != ""){ - this.queryParams.equipmentId = "" - }else{ - if(this.queryParams.equipmentId == this.queryParamEquip.equipmentId){ - this.queryParams.equipmentId = this.typeEquipment - }else{ + if (this.queryParams.parentId != '') { + this.queryParams.equipmentId = '' + } else { + if (this.queryParams.equipmentId == this.queryParamEquip.equipmentId) { + this.queryParams.equipmentId = this.typeEquipment + } else { this.queryParams.equipmentId = this.queryParamEquip.equipmentId } } - getAction(this.url.comparativeAnalysis,this.queryParams).then((res) => { - if(res.success){ + getAction(this.url.comparativeAnalysis, this.queryParams).then((res) => { + if (res.success) { this.AnalysisList = res.result this.AnalysisBarList = res.result.graphics this.AnalysisGauge = res.result.meters this.AnalysisPie.push(res.result.pieCharts) - }else{ + } else { // this.$message.warning(res.message) this.$notification.warning({ - message:'娑堟伅', - description:res.message - }); + message: '娑堟伅', + description: res.message + }) } }).finally(() => { this.loading = false @@ -295,9 +309,9 @@ /** * 璋冪敤鎺ュ彛鑾峰彇鎺у埗绯荤粺绫诲瀷 */ - getDriveTypeByApi(){ - api.getDriveTypeApi().then((res)=>{ - this.driveTypeList=res.result.map(item=>item.value) + getDriveTypeByApi() { + api.getDriveTypeApi().then((res) => { + this.driveTypeList = res.result.map(item => item.value) }) }, /** @@ -309,7 +323,7 @@ filterOption(input, option) { return ( option.componentOptions.children[0].text.toUpperCase().indexOf(input.toUpperCase()) >= 0 - ); + ) }, // onChange(value, dateString) { // // console.log('Selected Time: ', value); @@ -422,13 +436,35 @@ // this.loading = false // }) // }, + deviceSearch() { + console.log('瑙﹀彂') + this.$refs.selectDeviceModal.visible = true + this.$refs.selectDeviceModal.selectedRowKeys = [] + this.$refs.selectDeviceModal.selectedRows = [] + this.$refs.selectDeviceModal.checkedKeys = this.queryParam.equipmentId.split(',') + }, + + /** + * 閫夋嫨宸叉湁璁惧鍚庣偣鍑荤‘瀹氭椂瑙﹀彂 + * @param data 宸查�夋嫨鐨勮澶� + */ + selectOK(data) { + // let params = {} + // params.equipmentIdList = [] + // for (var a = 0; a < data.length; a++) { + // params.equipmentIdList.push(data[a]) + // } + console.log('data=', data) + this.queryParam.equipmentId = data.join(',') + console.log('queryParam', this.queryParam.equipmentId) + } }, created() { this.dates = [moment().subtract('days', 7), moment().subtract('days', 0)] this.queryParam.startTime = moment(this.dates[0]).format('YYYYMMDD') this.queryParam.endTime = moment(this.dates[1]).format('YYYYMMDD') - this.queryParam.typeTree = "1"; - this.loadAnalysis(); + this.queryParam.typeTree = '1' + this.loadAnalysis() this.getDriveTypeByApi() } } @@ -437,54 +473,62 @@ <style lang="less" scoped> /*@import '~@assets/less/common.less';*/ - @media screen and (min-width: 1920px){ - .device_list{ - height: 811px!important; + @media screen and (min-width: 1920px) { + .device_list { + height: 811px !important; overflow: scroll; } } - @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; overflow: scroll; } } - @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; overflow: scroll; } } - @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; overflow: scroll; } } - @media screen and (max-width: 1280px){ - .device_list{ - height: 564px!important; + + @media screen and (max-width: 1280px) { + .device_list { + height: 564px !important; overflow: scroll; } } + /*.device_list{*/ - /*display: flex;*/ + /*display: flex;*/ /*}*/ /*.device_list .table-page-search-wrapper{*/ - /**/ + /**/ /*}*/ - /deep/ .ant-card-body{ - height: 100%!important; + /deep/ .ant-card-body { + height: 100% !important; } - .device_list .com_box{ - display: flex!important; - height: 100%!important; - flex-direction: column!important; + + .device_list .com_box { + display: flex !important; + height: 100% !important; + flex-direction: column !important; } - .device_list .table-page-search-wrapper{ - height: 6%!important; + + .device_list .table-page-search-wrapper { + height: 6% !important; } - .device_list #DeviceList{ - height: 90%!important; + + .device_list #DeviceList { + height: 90% !important; } </style> diff --git a/src/views/mdc/base/modules/deviceBaseInfo/EqumentDetaiModel.vue b/src/views/mdc/base/modules/deviceBaseInfo/EqumentDetaiModel.vue index e3506f2..f1f0867 100644 --- a/src/views/mdc/base/modules/deviceBaseInfo/EqumentDetaiModel.vue +++ b/src/views/mdc/base/modules/deviceBaseInfo/EqumentDetaiModel.vue @@ -84,14 +84,15 @@ <a-descriptions-item label="璁惧鍚嶇О">{{resultData.equipmentName}}</a-descriptions-item> <a-descriptions-item label="IP鍦板潃">{{resultData.equipmentIP}}</a-descriptions-item> <a-descriptions-item label="绔彛鍙�">{{resultData.dataPort}}</a-descriptions-item> - <a-descriptions-item label="绯荤粺鐗堟湰鍙�">{{resultData.SystemVersion}}</a-descriptions-item> + <a-descriptions-item label="绯荤粺鐗堟湰鍙�">{{resultData.systemVersion}}</a-descriptions-item> <a-descriptions-item label="椹卞姩绫诲瀷">{{resultData.driveType}}</a-descriptions-item> - <a-descriptions-item label="绯荤粺鍨嬪彿">{{resultData.SystemType}}</a-descriptions-item> + <a-descriptions-item label="绯荤粺鍨嬪彿">{{resultData.systemType}}</a-descriptions-item> <a-descriptions-item label="璁惧绫诲瀷">{{resultData.deviceType}}</a-descriptions-item> <a-descriptions-item label="璁惧鍔熺巼">{{resultData.devicePower}}</a-descriptions-item> - <a-descriptions-item label="鏈夋晥杞存暟">{{resultData.ValidAxis}}</a-descriptions-item> - <a-descriptions-item label="鏈�澶ц酱鏁�">{{resultData.MaxAxis}}</a-descriptions-item> + <a-descriptions-item label="鏈夋晥杞存暟">{{resultData.validAxis}}</a-descriptions-item> + <a-descriptions-item label="鏈�澶ц酱鏁�">{{resultData.maxAxis}}</a-descriptions-item> <a-descriptions-item label="澶囨敞">{{resultData.remark}}</a-descriptions-item> + </a-descriptions> <!-- <a-descriptions @@ -228,13 +229,25 @@ v-show="mdcDriveTypeParamConfigList != null" v-if="driverType != 'PLC'" :column="4" + class="operationData" > <a-descriptions-item v-for="(item,id) in mdcDriveTypeParamConfigList " :key="item.id" :label="item.chineseName" - >{{item.value}}</a-descriptions-item> + > + <a-popover v-if="item.value&&item.value.length>18"> + <template slot="content"> + {{item.value}} + </template> + {{item.value}} + </a-popover> + + <template v-else> + {{item.value}} + </template> + </a-descriptions-item> </a-descriptions> @@ -251,16 +264,17 @@ <!-->{{item.value}}</a-descriptions-item>--> <!--</a-descriptions>--> - <a-descriptions - title="鐗堟湰淇℃伅 for lsv2" - v-if="driverType == 'LSV2'" - :column="4" - > - <a-descriptions-item label="NC鐗堟湰">{{resultData.nCVersion}}</a-descriptions-item> - <a-descriptions-item label="TNC鐗堟湰">{{resultData.tNCVersion}}</a-descriptions-item> - <a-descriptions-item label="OPT鐗堟湰">{{resultData.oPTVersion}}</a-descriptions-item> - <a-descriptions-item label="PLC鐗堟湰">{{resultData.pLCVersion}}</a-descriptions-item> - </a-descriptions> + <!--<a-descriptions--> + <!--title="鐗堟湰淇℃伅 for lsv2"--> + <!--v-if="driverType == 'LSV2'"--> + <!--:column="4"--> + <!--class="lsv2Data"--> + <!-->--> + <!--<a-descriptions-item label="NC鐗堟湰">{{resultData.ncversion}}</a-descriptions-item>--> + <!--<a-descriptions-item label="TNC鐗堟湰">{{resultData.tncversion}}</a-descriptions-item>--> + <!--<a-descriptions-item label="OPT鐗堟湰">{{resultData.optversion}}</a-descriptions-item>--> + <!--<a-descriptions-item label="PLC鐗堟湰">{{resultData.plcversion}}</a-descriptions-item>--> + <!--</a-descriptions>--> </td> </tr> @@ -290,7 +304,6 @@ props: {}, data() { return { - mdcDriveTypeParamConfigList: [], xyzAliasesList: [], title: '', @@ -464,7 +477,7 @@ show: false, }, axisTick: { - show: true, + show: false, length: 20, splitNumber: 1, lineStyle: { @@ -520,6 +533,9 @@ pointer: { show: true, width: 3, + itemStyle:{ + color:'#fff', + } }, data: [{ name: '', @@ -717,7 +733,7 @@ show: false, }, axisTick: { - show: true, + show: false, length: 20, splitNumber: 1, lineStyle: { @@ -773,6 +789,9 @@ pointer: { show: true, width: 3, + itemStyle:{ + color:'#fff' + } }, data: [{ name: '', @@ -867,7 +886,7 @@ type: 'gauge', radius: '80%', min: 0, //鏈�灏忓埢搴� - max: 300, //鏈�澶у埢搴� + max: 100, //鏈�澶у埢搴� splitNumber: 10, //鍒诲害鏁伴噺 startAngle: 225, endAngle: -45, @@ -970,7 +989,7 @@ show: false, }, axisTick: { - show: true, + show: false, length: 20, splitNumber: 1, lineStyle: { @@ -994,12 +1013,12 @@ radius: '52.5%', z: 3, startAngle: 225, - max: 300, + max: 100, endAngle: -45, axisLine: { lineStyle: { color: [ - [_this.spindleload / 300, '#31F3FF'], // 鍔ㄦ�� + [_this.spindleload / 100, '#31F3FF'], // 鍔ㄦ�� [1, '#185363'] ], width: 4 @@ -1026,6 +1045,9 @@ pointer: { show: true, width: 3, + itemStyle:{ + color:'#fff' + } }, data: [{ name: '', @@ -1223,7 +1245,7 @@ show: false, }, axisTick: { - show: true, + show: false, length: 20, splitNumber: 1, lineStyle: { @@ -1279,6 +1301,9 @@ pointer: { show: true, width: 3, + itemStyle:{ + color:'#fff' + } }, data: [{ name: '', @@ -1439,7 +1464,7 @@ /*background: -ms-linear-gradient(left, rgba(0, 0, 0, 0.66) 0%, rgba(0, 0, 0, 0.4) 100%);*/ /*background: linear-gradient(to right, rgba(0, 0, 0, 0.66) 0%, rgba(0, 0, 0, 0.4) 100%);*/ background-color: #312c2c; - opacity: 0.7; + opacity: 0.9; } /deep/ .ant-modal-close { color: #1191b0; @@ -1524,4 +1549,18 @@ .ant-tabs-content .ant-form-item { margin-bottom: 0px; } + + /deep/ .ant-descriptions-item-label{ + width: 6.7vw; + text-align: right; + margin-right: 10px; + } + + /deep/ .operationData .ant-descriptions-item-content + { + width: 130px; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + } </style> diff --git a/src/views/mdc/base/modules/deviceCalendar/DeviceCalendarModel.vue b/src/views/mdc/base/modules/deviceCalendar/DeviceCalendarModel.vue index f48a441..01f0c63 100644 --- a/src/views/mdc/base/modules/deviceCalendar/DeviceCalendarModel.vue +++ b/src/views/mdc/base/modules/deviceCalendar/DeviceCalendarModel.vue @@ -8,7 +8,7 @@ <a-col :span="24"> <a-form-item label="璁惧缁�" :labelCol="labelColLong" :wrapperCol="wrapperColLong"> <a-input-search :readOnly="true" v-decorator="['equipmentId', validatorRules.equipmentId]" - @search="deviceSearch" enter-button/> + @search="deviceSearch" enter-button placeholder="璇烽�夋嫨璁惧"/> </a-form-item> </a-col> </a-row> @@ -44,6 +44,7 @@ </a-form> </a-spin> <device-calend-list-model ref="deviceRepairListModel" @sendSelectionRows="getDeviceRows"></device-calend-list-model> + <select-device-modal ref="selectDeviceModal" @selectFinished="selectOK" :title="'閫夋嫨璁惧'"/> </a-modal> </div> </template> @@ -62,10 +63,11 @@ } from '@/api/api' import Calendar from 'vue-calendar-component'; + import SelectDeviceModal from '../../../../system/modules/SelectDeviceModal' export default { name: 'ShiftInfoModel', - components: {DeviceCalendListModel,Calendar}, + components: { SelectDeviceModal, DeviceCalendListModel,Calendar}, props: {}, data() { return { @@ -239,9 +241,10 @@ this.value = value; }, deviceSearch() { - this.$refs.deviceRepairListModel.openPage() - this.$refs.deviceRepairListModel.title = '閫夋嫨璁惧' - this.$refs.deviceRepairListModel.disableSubmit = false + this.$refs.selectDeviceModal.visible = true + this.$refs.selectDeviceModal.selectedRowKeys = [] + this.$refs.selectDeviceModal.selectedRows = [] + this.$refs.selectDeviceModal.checkedKeys = this.form.getFieldValue('equipmentId') ? this.form.getFieldValue('equipmentId').split(',') : [] }, getDeviceRows(val) { console.log("========",val); @@ -342,6 +345,21 @@ this.close() }, + /** + * 閫夋嫨宸叉湁璁惧鍚庣偣鍑荤‘瀹氭椂瑙﹀彂 + * @param data 宸查�夋嫨鐨勮澶� + */ + selectOK(data) { + // let params = {} + // params.equipmentIdList = [] + // for (var a = 0; a < data.length; a++) { + // params.equipmentIdList.push(data[a]) + // } + console.log('data=', data) + this.form.setFieldsValue({ + equipmentId: data.join(',') + }) + } } } </script> diff --git a/src/views/mdc/base/modules/deviceRepair/DeviceRepairModel.vue b/src/views/mdc/base/modules/deviceRepair/DeviceRepairModel.vue index 77685af..99823a2 100644 --- a/src/views/mdc/base/modules/deviceRepair/DeviceRepairModel.vue +++ b/src/views/mdc/base/modules/deviceRepair/DeviceRepairModel.vue @@ -19,7 +19,7 @@ <!--</a-form-item>--> <a-form-item label="璁惧缁�" :labelCol="labelColLong" :wrapperCol="wrapperColLong"> <a-input-search :readOnly="true" v-decorator="['equipmentIds', validatorRules.equipmentIds]" - @search="deviceSearch" enter-button/> + @search="deviceSearch" enter-button placeholder="璇烽�夋嫨璁惧"/> <!--<a-input :disabled="disableSubmit" :readOnly="disableSubmit" allow-clear placeholder="璇疯緭鍏ヨ澶囩紪鍙�"--> <!--v-decorator="['equipmentId',validatorRules.equipmentId]"/>--> </a-form-item> @@ -74,17 +74,13 @@ <!--</a-row>--> </a-form> </a-spin> - <device-repair-list-model ref="deviceRepairListModel" @sendSelectionRows="getDeviceRows" - :selectedEquipmentIds="selectedEquipmentIds" - ></device-repair-list-model> - + <select-device-modal ref="selectDeviceModal" @selectFinished="selectOK" :title="'閫夋嫨璁惧'"/> </a-modal> </template> <script> import moment from 'moment' import pick from 'lodash.pick' - import DeviceRepairListModel from './DeviceRepairListModel' import JDate from './JDate' import { getAction, @@ -94,12 +90,12 @@ import { duplicateCheck } from '@/api/api' - import AFormItem from 'ant-design-vue/es/form/FormItem' import Vue from 'vue' + import SelectDeviceModal from '../../../../system/modules/SelectDeviceModal' export default { name: 'DeviceRepairModel', - components: { AFormItem, DeviceRepairListModel, JDate }, + components: { SelectDeviceModal, JDate }, props: { equipmentId: { type: String @@ -277,9 +273,10 @@ // }) }, deviceSearch() { - this.$refs.deviceRepairListModel.openPage() - this.$refs.deviceRepairListModel.title = '閫夋嫨璁惧' - this.$refs.deviceRepairListModel.disableSubmit = false + this.$refs.selectDeviceModal.visible = true + this.$refs.selectDeviceModal.selectedRowKeys = [] + this.$refs.selectDeviceModal.selectedRows = [] + this.$refs.selectDeviceModal.checkedKeys = this.form.getFieldValue('equipmentIds') ? this.form.getFieldValue('equipmentIds').split(',') : [] }, //绾ц仈妗唎nChange浜嬩欢 // onChange(value) { @@ -477,6 +474,22 @@ return { disabledSeconds: () => this.range(1, 60) } + }, + + /** + * 閫夋嫨宸叉湁璁惧鍚庣偣鍑荤‘瀹氭椂瑙﹀彂 + * @param data 宸查�夋嫨鐨勮澶� + */ + selectOK(data) { + // let params = {} + // params.equipmentIdList = [] + // for (var a = 0; a < data.length; a++) { + // params.equipmentIdList.push(data[a]) + // } + console.log('data=', data) + this.form.setFieldsValue({ + equipmentIds: data.join(',') + }) } } } diff --git a/src/views/mdc/base/modules/efficiencyPOReport/EfficiencyPOList.vue b/src/views/mdc/base/modules/efficiencyPOReport/EfficiencyPOList.vue index d5c0b4a..6e8d49e 100644 --- a/src/views/mdc/base/modules/efficiencyPOReport/EfficiencyPOList.vue +++ b/src/views/mdc/base/modules/efficiencyPOReport/EfficiencyPOList.vue @@ -5,19 +5,26 @@ <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-select placeholder="璇烽�夋嫨璁惧绫诲瀷" :triggerChange="true" v-model="queryParam.equipmentType" :allowClear="true"> + <a-select-option v-for='item in selectList' :key='item.id' :value='item.equipmentTypeName'> + {{item.equipmentTypeName}} + </a-select-option> + </a-select> + </a-form-item> + </a-col> <a-col :md="6" :sm="6"> <a-form-item label="鏃堕棿"> <a-range-picker @change="dateParamChange" :disabledDate="disabledDate" format="YYYYMMDD" v-model="dates"/> </a-form-item> </a-col> - <a-col :lg="2" :md="3" :sm="3" :xs="3"> - <a-button type="primary" @click="searchQuery" icon="search">鏌ヨ</a-button> - </a-col> - <a-col :lg="2" :md="3" :sm="3" :xs="3"> - <a-button type="primary" @click="searchReset" icon="reload">閲嶇疆</a-button> - </a-col> - <a-col :lg="2" :md="3" :sm="3" :xs="3"> - <a-button type="primary" @click="exportExcel" icon="download">瀵煎嚭</a-button> + <a-col :md="14" :sm="14"> + <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-row> <a-row :gutter="24"> @@ -42,65 +49,73 @@ </tr> </table> </div> - <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"> - <thead> - <tr class="thead fixed equipname"> - <th class="thgu dong1 name" rowspan="2" style="min-width: 50px; max-width: 50px;width: 50px;"></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: 150px; max-width: 150px;width: 150px;">璁惧鍚嶇О</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> - </template> - </tr> - <tr class="thead notfixed gudingth"> - <template v-for="(tableHead, index) in tableHeads"> - <th>寮�鍔ㄧ巼(%)</th> - <th v-if="checkedList.indexOf('kjl') > -1">寮�鏈虹巼(%)</th> - <th v-if="checkedList.indexOf('kjsj') > -1">寮�鏈烘椂闂�(s)</th> - <th v-if="checkedList.indexOf('jgsj') > -1">鍔犲伐鏃堕棿(s)</th> - <th v-if="checkedList.indexOf('djsj') > -1">寰呮満鏃堕棿(s)</th> - <th v-if="checkedList.indexOf('gjsj') > -1">鍏虫満鏃堕棿(s)</th> - </template> - </tr> - </thead> - <tbody> - <tr class="mathData" v-for="(item, index) in dataList"> - <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="tdgu3 kaitou">{{item.equipmentId}}</td> - <td class="tdgu4 kaitou">{{item.equipmentName}}</td> - <td class="tdgu5 kaitou">{{item.equipmentType}}</td> - <!--<td>{{item.tierType}}</td>--> - <template v-for="(tableHead, index) in item.dataList"> - <td :style="{background:tableHead.color }">{{tableHead.startRate | numFilter}}</td> - <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('kjl') > -1"> - {{tableHead.openRate | numFilter}} - </td> - <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('kjsj') > -1"> - {{tableHead.openLong}} - </td> - <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('jgsj') > -1"> - {{tableHead.processLong}} - </td> - <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('djsj') > -1"> - {{tableHead.waitLong}} - </td> - <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('gjsj') > -1"> - {{tableHead.closeLong}} - </td> - </template> - </tr> - </tbody> - </table> + <a-spin :spinning="spinning"> + <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"> + <thead> + <tr class="thead fixed equipname"> + <th class="thgu dong1 name" rowspan="2" style="min-width: 50px; max-width: 50px;width: 50px;">鍏徃</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> + </template> + </tr> + <tr class="thead notfixed gudingth"> + <template v-for="(tableHead, index) in tableHeads"> + <th>寮�鍔ㄧ巼(%)</th> + <th v-if="checkedList.indexOf('kjl') > -1">寮�鏈虹巼(%)</th> + <th v-if="checkedList.indexOf('kjsj') > -1">寮�鏈烘椂闂�(灏忔椂)</th> + <th v-if="checkedList.indexOf('jgsj') > -1">鍔犲伐鏃堕棿(灏忔椂)</th> + <th v-if="checkedList.indexOf('djsj') > -1">寰呮満鏃堕棿(灏忔椂)</th> + <th v-if="checkedList.indexOf('gjsj') > -1">鍏虫満鏃堕棿(灏忔椂)</th> + </template> + </tr> + </thead> + <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="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> + <!--<td>{{item.tierType}}</td>--> + <template v-for="(tableHead, index) in item.dataList"> + <td :style="{background:tableHead.color }">{{tableHead.startRate | numFilter}}</td> + <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('kjl') > -1"> + {{tableHead.openRate | numFilter}} + </td> + <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('kjsj') > -1"> + {{tableHead.openLong | getFormattedTime}} + </td> + <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('jgsj') > -1"> + {{tableHead.processLong | getFormattedTime}} + </td> + <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('djsj') > -1"> + {{tableHead.waitLong | getFormattedTime}} + </td> + <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('gjsj') > -1"> + {{tableHead.closeLong | getFormattedTime}} + </td> + </template> + </tr> + </tbody> + </table> + </div> </div> - </div> + </a-spin> </div> </div> </template> @@ -120,6 +135,7 @@ typeParent:1, typeEquipment:1, dates: [], + selectList:[], queryParam: {}, queryParamEquip:{}, queryParamPeople:{}, @@ -136,9 +152,11 @@ dataList: [], url: { list: '/mdc/efficiencyReport/efficiencyPOList', - listByType: '/mdc/MdcUtilizationRate/getByType' + listByType: '/mdc/MdcUtilizationRate/getByType', + queryEquipmentType: '/mdc/mdcEquipmentType/queryEquipmentType' }, - tableHeads: [] + tableHeads: [], + spinning:false } }, props: { nodeTree: '', Type:'',nodePeople: ''}, @@ -149,6 +167,7 @@ this.queryParam.endTime = moment(this.dates[1]).format('YYYYMMDD') this.queryParam.typeTree = "1" this.loadData() + this.queryGroup() }, watch: { Type(valmath){ @@ -187,7 +206,20 @@ } else { return '0' } - } + }, + + /** + * 鏍煎紡鍖栨椂闂� + * @param seconds 绉掓暟 + * @returns '' 鏍煎紡鍖栧悗鏃堕棿瀛楃涓� + */ + getFormattedTime(seconds) { + if (seconds) { + return parseFloat((seconds / 3600).toFixed(2)) + '灏忔椂' + } else { + return '0' + } + }, }, methods: { checkSameData(dataList){ @@ -379,6 +411,7 @@ // this.onClearSelected() }, loadData() { + this.spinning=true this.tableHeads = [] this.dataList = [] getAction(this.url.list, this.queryParam).then(res => { @@ -392,6 +425,26 @@ this.combineCell(); // this.initDeviceType(this.dataList) } + }).finally(()=>{ + this.spinning=false + }) + }, + queryGroup() { + getAction(this.url.queryEquipmentType).then(res => { + if (res.success) { + this.selectList = res.result + // this.selectList = res.result.map((item, index, arr) => { + // return { label: item.id, value: item.equipmentTypeName + '' } + // }) + } else { + // this.$message.warning(res.message) + this.$notification.warning({ + message: '娑堟伅', + description: res.message + }) + } + }).finally(() => { + this.loading = false }) } } @@ -443,7 +496,7 @@ } .table tbody tr .tdgu5{ position: sticky; - left: 400px; + left: 412px; z-index: 2; } @@ -484,7 +537,7 @@ } .table2 thead .equipname .dong6{ z-index: 5; - left: 400px; + left: 412px; } diff --git a/src/views/mdc/base/modules/efficiencyReport/EfficiencyList.vue b/src/views/mdc/base/modules/efficiencyReport/EfficiencyList.vue index eeda3d2..3948f87 100644 --- a/src/views/mdc/base/modules/efficiencyReport/EfficiencyList.vue +++ b/src/views/mdc/base/modules/efficiencyReport/EfficiencyList.vue @@ -6,19 +6,28 @@ <div class="table-page-search-wrapper"> <a-form layout="inline" @keyup.enter.native="searchQuery"> <a-row :gutter="24"> - <a-col :md="6" :sm="6"> - <a-form-item label="鏃堕棿"> - <a-range-picker @change="dateParamChange" :disabledDate="disabledDate" format="YYYYMMDD" v-model="dates"/> + <a-col :md="4" :sm="4"> + <a-form-item label="璁惧绫诲瀷"> + <a-select placeholder="璇烽�夋嫨璁惧绫诲瀷" :triggerChange="true" v-model="queryParam.equipmentType" + :allowClear="true"> + <a-select-option v-for='item in selectList' :key='item.id' :value='item.equipmentTypeName'> + {{item.equipmentTypeName}} + </a-select-option> + </a-select> </a-form-item> </a-col> - <a-col :lg="2" :md="3" :sm="3" :xs="3"> - <a-button type="primary" @click="searchQuery" icon="search">鏌ヨ</a-button> + <a-col :md="6" :sm="6"> + <a-form-item label="鏃堕棿"> + <a-range-picker @change="dateParamChange" :disabledDate="disabledDate" format="YYYYMMDD" + v-model="dates"/> + </a-form-item> </a-col> - <a-col :lg="2" :md="3" :sm="3" :xs="3"> - <a-button type="primary" @click="searchReset" icon="reload">閲嶇疆</a-button> - </a-col> - <a-col :lg="2" :md="3" :sm="3" :xs="3"> - <a-button type="primary" @click="exportExcel" icon="download">瀵煎嚭</a-button> + <a-col :md="14" :sm="14"> + <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-row> <a-row :gutter="24"> @@ -45,583 +54,701 @@ </div> </div> - <div id="Efficiency" class="container" style="margin-top: 20px;"> - <div class="table2"> - <table class="dataContent table" border="1" cellspacing="0" cellpadding="0" style="white-space: nowrap"> - <thead> - <tr class="thead fixed equipname"> - <th class="thgu dong1 name" rowspan="2" style="min-width: 50px; max-width: 50px;width: 50px;"></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: 150px; max-width: 150px;width: 150px;">璁惧鍚嶇О</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> - </template> - </tr> - <tr class="thead notfixed gudingth"> - <template v-for="(tableHead, index) in tableHeads"> - <th>鍒╃敤鐜�(%)</th> - <th v-if="checkedList.indexOf('kjl') > -1">寮�鏈虹巼(%)</th> - <th v-if="checkedList.indexOf('kjsj') > -1">寮�鏈烘椂闂�(s)</th> - <th v-if="checkedList.indexOf('jgsj') > -1">鍔犲伐鏃堕棿(s)</th> - <th v-if="checkedList.indexOf('djsj') > -1">寰呮満鏃堕棿(s)</th> - <th v-if="checkedList.indexOf('gjsj') > -1">鍏虫満鏃堕棿(s)</th> - </template> - </tr> - </thead> - <tbody> - <tr class="mathData" v-for="(item, index) in dataList"> - <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="tdgu3 kaitou">{{item.equipmentId}}</td> - <td class="tdgu4 kaitou">{{item.equipmentName}}</td> - <td class="tdgu5 kaitou">{{item.equipmentType}}</td> - <template v-for="(tableHead, index) in item.dataList"> - <td :style="{background:tableHead.color }">{{tableHead.utilizationRate | numFilter}}</td> - <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('kjl') > -1"> - {{tableHead.openRate | numFilter}} - </td> - <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('kjsj') > -1"> - {{tableHead.openLong}} - </td> - <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('jgsj') > -1"> - {{tableHead.processLong}} - </td> - <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('djsj') > -1"> - {{tableHead.waitLong}} - </td> - <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('gjsj') > -1"> - {{tableHead.closeLong}} - </td> - </template> - </tr> - </tbody> - </table> + <a-spin :spinning="spinning"> + <div id="Efficiency" class="container" 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"> + <thead> + <tr class="thead fixed equipname"> + <th class="thgu dong1 name" rowspan="2" style="min-width: 50px; max-width: 50px;width: 50px;">鍏徃</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> + </template> + </tr> + <tr class="thead notfixed gudingth"> + <template v-for="(tableHead, index) in tableHeads"> + <th>鍒╃敤鐜�(%)</th> + <th v-if="checkedList.indexOf('kjl') > -1">寮�鏈虹巼(%)</th> + <th v-if="checkedList.indexOf('kjsj') > -1">寮�鏈烘椂闂�(灏忔椂)</th> + <th v-if="checkedList.indexOf('jgsj') > -1">鍔犲伐鏃堕棿(灏忔椂)</th> + <th v-if="checkedList.indexOf('djsj') > -1">寰呮満鏃堕棿(灏忔椂)</th> + <th v-if="checkedList.indexOf('gjsj') > -1">鍏虫満鏃堕棿(灏忔椂)</th> + </template> + + </tr> + </thead> + <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="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> + </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 }">{{tableHead.utilizationRate | numFilter}}</td> + <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('kjl') > -1"> + {{tableHead.openRate | numFilter}} + </td> + <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('kjsj') > -1"> + {{tableHead.openLong | getFormattedTime}} + </td> + <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('jgsj') > -1"> + {{tableHead.processLong | getFormattedTime}} + </td> + <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('djsj') > -1"> + {{tableHead.waitLong | getFormattedTime}} + </td> + <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('gjsj') > -1"> + {{tableHead.closeLong | getFormattedTime}} + </td> + </template> + + </tr> + + </tbody> + </table> + + </div> </div> - </div> + </a-spin> </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' -export default { - name: 'EfficiencyList', - components: {}, - data() { - return { - typeTree:"", - typeParent:1, - typeEquipment:1, - TreeIDOne:1, - TreeIDTwo:2, - deviceTypeDict: '', - dates: [], - identifying: [], - queryParam: {}, - queryParams:{}, - queryParamEquip:{}, - queryParamPeople:{}, - 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/efficiencyList', - listByType: '/mdc/MdcUtilizationRate/getByType', - }, - tableHeads: [], + import moment from 'moment' + import { putAction, getAction } from '@/api/manage' + import $ from 'jquery' + import '@/components/table2excel/table2excel' + import { ajaxGetDictItems, getDictItemsFromCache, duplicateCheck } from '@/api/api' - } - }, - 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() - }, - 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: 'EfficiencyList', + components: {}, + data() { + return { + typeTree: '', + typeParent: 1, + typeEquipment: 1, + TreeIDOne: 1, + TreeIDTwo: 2, + deviceTypeDict: '', + dates: [], + selectList: [], + identifying: [], + queryParam: {}, + queryParams: {}, + queryParamEquip: {}, + queryParamPeople: {}, + 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/efficiencyList', + listByType: '/mdc/MdcUtilizationRate/getByType', + queryEquipmentType: '/mdc/mdcEquipmentType/queryEquipmentType' + }, + tableHeads: [], + distinguishColorList: [], + utilizationRateRowAverage: '', + openRateRowAverage: '', + openLongRowAverage: '', + processLongRowAverage: '', + waitLongRowAverage: '', + closeLongRowAverage: '', + 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' - } - } - }, - methods: { - 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 + 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() }, - 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; - } + 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 = '' } - k = i; + 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() } } - return list; }, - disabledDate(current){ - //Can not slect days before today and today - return current && current > moment().subtract('days', 1); + 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' + } + } }, - 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 + computed: {}, + methods: { + 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 } } - } 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 - } + 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() { - $("#Efficiency").table2excel({ - exclude: ".noExl", - name: "Excel Document Name", - filename: "璁惧鍒╃敤鐜�", - exclude_img: true, - fileext: ".xls", - exclude_links: true, - exclude_inputs: false - }); - }, - showIdentifying() { - getAction(this.url.listByType, { type: 'lyl' }).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:"涓嶈兘鍙栨秷鏌ヨ寮�鍔ㄧ巼" + }, + exportExcel() { + $('#Efficiency').table2excel({ + exclude: '.noExl', + name: 'Excel Document Name', + filename: '璁惧鍒╃敤鐜�', + exclude_img: true, + fileext: '.xls', + exclude_links: true, + exclude_inputs: false }) + }, + showIdentifying() { + getAction(this.url.listByType, { type: 'lyl' }).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.TreeIDTwo = "" - // this.queryParam.parentId = this.queryParamEquip.parentId - // this.queryParam.equipmentId = this.queryParamEquip.equipmentId - // }else{ - // // this.queryParam.TreeIDOne = "" - // this.queryParam.parentId = this.queryParamPeople.parentId - // this.queryParam.equipmentId = "" - // } - // this.loadData() - // // this.onClearSelected() - // }, - // searchReset() { - // this.typeTree = this.queryParam.typeTree - // this.typeParent = this.queryParams.parentId - // this.queryParam = {} - // this.dates = [] - // this.queryParam.typeTree = this.typeTree - // this.queryParam.parentId = this.typeParent - // this.loadData() - // // this.onClearSelected() - // }, - searchQuery() { - if(this.dates != ''){ - 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 = "" + return false } + this.checkedList = checkedList + }, + // searchQuery() { + // if(this.queryParam.typeTree == "1"){ + // // this.queryParam.TreeIDTwo = "" + // this.queryParam.parentId = this.queryParamEquip.parentId + // this.queryParam.equipmentId = this.queryParamEquip.equipmentId + // }else{ + // // this.queryParam.TreeIDOne = "" + // this.queryParam.parentId = this.queryParamPeople.parentId + // this.queryParam.equipmentId = "" + // } + // this.loadData() + // // this.onClearSelected() + // }, + // searchReset() { + // this.typeTree = this.queryParam.typeTree + // this.typeParent = this.queryParams.parentId + // this.queryParam = {} + // this.dates = [] + // this.queryParam.typeTree = this.typeTree + // this.queryParam.parentId = this.typeParent + // this.loadData() + // // this.onClearSelected() + // }, + searchQuery() { + console.log('dates', this.dates) + if (this.dates != '') { + 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 = '' + } + this.loadData() + } else { + this.$notification.warning({ + message: '娑堟伅', + description: '璇烽�夋嫨鏃堕棿' + }) + } + // this.onClearSelected() + }, + searchReset() { + this.typeTree = this.queryParam.typeTree + this.typeParent = this.queryParam.parentId + this.typeEquipment = this.queryParam.equipmentId + this.queryParam = {} + this.dates = [] + this.queryParam.typeTree = this.typeTree + this.queryParam.parentId = this.typeParent + this.queryParam.equipmentId = this.typeEquipment + // this.ipagination.current = 1 this.loadData() - }else{ - this.$notification.warning({ - message:'娑堟伅', - description:"璇烽�夋嫨鏃堕棿" - }); - } - // this.onClearSelected() - }, - searchReset() { - this.typeTree = this.queryParam.typeTree - this.typeParent = this.queryParam.parentId - this.typeEquipment = this.queryParam.equipmentId - this.queryParam = {} - this.dates = [] - this.queryParam.typeTree = this.typeTree - this.queryParam.parentId = this.typeParent - this.queryParam.equipmentId = this.typeEquipment - // this.ipagination.current = 1 - this.loadData(); - // this.queryParam = {} - // this.dates = [] - // this.loadData() - // this.onClearSelected() - }, - loadData() { - this.tableHeads = [] - this.dataList = [] - getAction(this.url.list, this.queryParam).then(res => { - if (res.success) { - this.tableHeads = res.result.dates - this.dataList = res.result.mdcEfficiencyList - this.checkSameData(this.dataList) - this.checkSameData1(this.dataList) - this.checkSameData2(this.dataList) - this.combineCell(); - // this.initDeviceType(this.dataList) - - } - }) + // this.queryParam = {} + // this.dates = [] + // this.loadData() + // this.onClearSelected() + }, + loadData() { + this.tableHeads = [] + this.dataList = [] + this.spinning = true + getAction(this.url.list, this.queryParam).then(res => { + if (res.success) { + this.tableHeads = res.result.dates + this.dataList = res.result.mdcEfficiencyList + this.distinguishColorList = res.result.utilizationRateList + this.checkSameData(this.dataList) + this.checkSameData1(this.dataList) + this.checkSameData2(this.dataList) + this.combineCell() + // this.columns.push(...dataColumns) + // this.initDeviceType(this.dataList) + } + }).finally(() => { + this.spinning = false + }) + }, + queryGroup() { + getAction(this.url.queryEquipmentType).then(res => { + if (res.success) { + this.selectList = res.result + // this.selectList = res.result.map((item, index, arr) => { + // return { label: item.id, value: item.equipmentTypeName + '' } + // }) + } else { + // this.$message.warning(res.message) + this.$notification.warning({ + message: '娑堟伅', + description: res.message + }) + } + }).finally(() => { + this.loading = false + }) + }, } } -} </script> <style scoped> -.table2{ - width: 100%; - height: 100%; - overflow: auto; -} -.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 .kaitou{ - z-index: 1; - background-color: white; -} -.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 .tdgu3{ - position: sticky; - left: 150px; - z-index: 2; -} -.table tbody tr .tdgu4{ - position: sticky; - left: 250px; - z-index: 2; -} -.table tbody tr .tdgu5{ - position: sticky; - left: 400px; - z-index: 2; -} -.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 .equipname .name{ - z-index: 3; -} -.table2 thead .equipname .dong1{ - z-index: 4; - left: 0; - /*border: 1px solid #000;*/ -} -.table2 thead .equipname .dong2{ - z-index: 5; - left: 50px; -} -.table2 thead .equipname .dong3{ - z-index: 5; - left: 100px; -} -.table2 thead .equipname .dong4{ - z-index: 5; - left: 150px; -} -.table2 thead .equipname .dong5{ - z-index: 5; - left: 250px; -} -.table2 thead .equipname .dong6{ - z-index: 5; - left: 400px; -} - -@media screen and (min-width: 1920px){ - #Efficiency{ - height: 687px!important; - overflow: scroll; + .table2 { + width: 100%; + height: 100%; + overflow: auto; } -} -@media screen and (min-width: 1680px) and (max-width: 1920px){ - #Efficiency{ - height: 687px!important; - overflow: scroll; + + .table2 thead tr th:first-child, + .table tbody tr .tdgu { + position: sticky; + left: 0; + z-index: 1; } -} -@media screen and (min-width: 1400px) and (max-width: 1680px){ - #Efficiency{ - height: 540px!important; - overflow: scroll; + + .table tbody tr .wenzi { + /*writing-mode: vertical-lr;*/ + /*text-orientation: upright;*/ + transform: rotate(360deg); + writing-mode: vertical-lr; + letter-spacing: 2px; } -} -@media screen and (min-width: 1280px) and (max-width: 1400px){ - #Efficiency{ - height: 440px!important; - overflow: scroll; + + .table tbody tr .kaitou { + z-index: 1; + background-color: white; } -} -@media screen and (max-width: 1280px){ - #Efficiency{ - height: 440px!important; - overflow: scroll; + + .table tbody tr .tdgu1 { + position: sticky; + left: 50px; + z-index: 2; } -} -#Efficiency .table_guding1{ - position: absolute; - overflow: hidden; - width: 500px; -} -#Efficiency .table_guding2{ - overflow-x: scroll; - width: 500px; -} -.identifyingclass { - width: 55px; - height: 15px; - display: inline-block -} -.dataContent { - white-space: nowrap; - /*margin: 0;*/ - /*border: none;*/ - 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; -} + .table tbody tr .tdgu2 { + position: sticky; + left: 100px; + z-index: 2; + } -/*.dataContent .fixed th {*/ -/*width: 50px;*/ -/*}*/ + .table tbody tr .tdgu3 { + position: sticky; + left: 150px; + z-index: 2; + } -.dataContent .thead th { - background-color: #fafafa; - text-align: center; - height: 30px; - padding: 5px; -} + .table tbody tr .tdgu4 { + position: sticky; + left: 250px; + z-index: 2; + } -.dataContent .notfixed th { - /*width: auto;*/ -} + .table tbody tr .tdgu5 { + position: sticky; + left: 412px; + z-index: 2; + } -/*.dataContent tr td {*/ + .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 .equipname .name { + z-index: 3; + } + + .table2 thead .equipname .dong1 { + z-index: 4; + left: 0; + /*border: 1px solid #000;*/ + } + + .table2 thead .equipname .dong2 { + z-index: 5; + left: 50px; + } + + .table2 thead .equipname .dong3 { + z-index: 5; + left: 100px; + } + + .table2 thead .equipname .dong4 { + z-index: 5; + left: 150px; + } + + .table2 thead .equipname .dong5 { + z-index: 5; + left: 250px; + } + + .table2 thead .equipname .dong6 { + z-index: 5; + left: 412px; + } + + @media screen and (min-width: 1920px) { + #Efficiency { + height: 687px !important; + overflow: scroll; + } + } + + @media screen and (min-width: 1680px) and (max-width: 1920px) { + #Efficiency { + height: 687px !important; + overflow: scroll; + } + } + + @media screen and (min-width: 1400px) and (max-width: 1680px) { + #Efficiency { + height: 540px !important; + overflow: scroll; + } + } + + @media screen and (min-width: 1280px) and (max-width: 1400px) { + #Efficiency { + height: 440px !important; + overflow: scroll; + } + } + + @media screen and (max-width: 1280px) { + #Efficiency { + height: 440px !important; + overflow: scroll; + } + } + + #Efficiency .table_guding1 { + position: absolute; + overflow: hidden; + width: 500px; + } + + #Efficiency .table_guding2 { + overflow-x: scroll; + width: 500px; + } + + .identifyingclass { + width: 55px; + height: 15px; + display: inline-block + } + + .dataContent { + white-space: nowrap; + /*margin: 0;*/ + /*border: none;*/ + 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 .fixed th {*/ + /*width: 50px;*/ + /*}*/ + + .dataContent .thead th { + background-color: #fafafa; + text-align: center; + height: 30px; + padding: 5px; + } + + .dataContent .notfixed th { + /*width: auto;*/ + } + + /*.dataContent tr td {*/ /*height: 35px;*/ -/*}*/ + /*}*/ -.dataContent .mathData td { - padding: 10px; - /*display: none;*/ -} + .dataContent .mathData td { + padding: 10px; + /*display: none;*/ + } -.dataContent .mathData .td { - /*background-color: #ff9bd2;*/ - display: inline-block; - padding: 10px; -} + .dataContent .mathData .td { + /*background-color: #ff9bd2;*/ + display: inline-block; + padding: 10px; + } -.dataContent .mathData .tdd { - /*display: none;*/ -} -td { - vertical-align: middle; -} -.pink { - background-color: #ff9bd2; -} + td { + vertical-align: middle; + } -.yellow { - background-color: #e8ff37; -} + .pink { + background-color: #ff9bd2; + } -.green { - background-color: #99ff4e; -} + .yellow { + background-color: #e8ff37; + } + + .green { + background-color: #99ff4e; + } + + .vertical-text { + writing-mode: vertical-rl; + } + + /*/deep/ .ant-table-body .ant-table-row td {*/ + /*padding-top: 10px;*/ + /*padding-bottom: 10px;*/ + /*}*/ + + /deep/ .ant-table-body .ant-table-row td.data { + min-width: 150px; + max-width: 150px; + } + + /deep/ .ant-table-tbody > tr.ant-table-row:hover > td { + background: none !important; + } + + /deep/ .ant-table-thead th { + text-align: center; + } + </style> \ No newline at end of file diff --git a/src/views/mdc/base/modules/efficiencyShiftReport/EfficiencyShiftList.vue b/src/views/mdc/base/modules/efficiencyShiftReport/EfficiencyShiftList.vue index b3e08fb..82ff5b5 100644 --- a/src/views/mdc/base/modules/efficiencyShiftReport/EfficiencyShiftList.vue +++ b/src/views/mdc/base/modules/efficiencyShiftReport/EfficiencyShiftList.vue @@ -6,12 +6,21 @@ <div class="table-page-search-wrapper"> <a-form layout="inline" @keyup.enter.native="searchQuery"> <a-row :gutter="24"> - <a-col :md="9" :sm="9" :xs="9"> + <a-col :md="4" :sm="4" > + <a-form-item label="璁惧绫诲瀷"> + <a-select placeholder="璇烽�夋嫨璁惧绫诲瀷" :triggerChange="true" v-model="queryParam.equipmentType" :allowClear="true"> + <a-select-option v-for='item in selectList' :key='item.id' :value='item.equipmentTypeName'> + {{item.equipmentTypeName}} + </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 @change="dateParamChange" :disabledDate="disabledDate" format="YYYYMMDD" v-model="dates"/> </a-form-item> </a-col> - <a-col :md="6" :sm="6" :xs="6"> + <a-col :md="4" :sm="4" :xs="4"> <a-form-item label="鐝埗"> <a-select v-model="queryParam.shiftId" placeholder="璇烽�夋嫨鐝埗" @change="initShiftSubList" :allowClear = "allowClear"> @@ -21,7 +30,7 @@ </a-select> </a-form-item> </a-col> - <a-col :md="6" :sm="6" :xs="6"> + <a-col :md="4" :sm="4" :xs="4"> <a-form-item label="鐝"> <a-select v-model="queryParam.shiftSubId" placeholder="璇烽�夋嫨鐝" @change="initShiftSubListChange" :allowClear = "allowClearSu"> <a-select-option v-for="(em,index) in shiftSubList" :key="index" :value="em.value"> @@ -30,119 +39,132 @@ </a-select> </a-form-item> </a-col> - </a-row> <a-row :gutter="24"> - <a-col :md="15" :sm="15" :xs="15"> + <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="3" :sm="3" :xs="3"> - <a-button type="primary" @click="searchQuery" icon="search">鏌ヨ</a-button> + <a-col :md="5" :sm="5"> + <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="3" :sm="3" :xs="3"> - <a-button type="primary" @click="searchReset" icon="reload">閲嶇疆</a-button> - </a-col> - <a-col :md="3" :sm="3" :xs="3"> - <a-button type="primary" @click="exportExcel" icon="download">瀵煎嚭</a-button> + <a-col :md="10" :sm="10"> + <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> + </tr> + </table> </a-col> </a-row> </a-form> - </div> - <div style="width: 530px;top: 0; right: 0px;"> - <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> - </tr> - </table> - </div> - </div> - <div class="container" id="EfficiencyShift" style="margin-top: 20px;"> - <div class="table2"> - <table class="dataContent table" border="1" cellspacing="0" cellpadding="0" style="white-space: nowrap"> - <thead> - <tr class="thead fixed equipname"> - <th class="thgu dong1 name" rowspan="2" style="min-width: 50px; max-width: 50px;width: 50px;"></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: 150px; max-width: 150px;width: 150px;">璁惧鍚嶇О</th> - <th class="thgu dong6 name" rowspan="2" style="min-width: 100px; max-width: 100px;width: 100px;">璁惧绫诲瀷</th> - <th class="thgu dong7 name" rowspan="2" style="min-width: 100px; max-width: 100px;width: 100px;">鐝</th> - <template v-for="(tableHead, index) in tableHeads"> - <th class="timeth" :colspan="checkedList.length">{{tableHead}}</th> - </template> - <!--average--> - <!--<th class="thgu dong4 name" rowspan="2" style="min-width: 100px; max-width: 150px;width: 150px;">骞冲潎鍊�(鐝鍒╃敤鐜�)</th>--> - - </tr> - <tr class="thead notfixed gudingth"> - <template v-for="(tableHead, index) in tableHeads"> - <th>鐝鍒╃敤鐜�(%)</th> - <!--<th v-if="checkedList.indexOf('gzl') > -1">鏁呴殰鐜�(%)</th>--> - <!--<th v-if="checkedList.indexOf('processingLong') > -1">杩愯鏃堕棿(s)</th>--> - <!--<th v-if="checkedList.indexOf('totalLong') > -1">鏈夋晥鏃堕棿(s)</th>--> - <!--<th v-if="checkedList.indexOf('faultLong') > -1">鏁呴殰鏃堕棿(s)</th>--> - <!--<!–<th v-if="checkedList.indexOf('gjsj') > -1">鍏虫満鏃堕棿(s)</th>–>--> - <th v-if="checkedList.indexOf('kjsj') > -1">寮�鏈烘椂闂�(s)</th> - <th v-if="checkedList.indexOf('jgsj') > -1">鍔犲伐鏃堕棿(s)</th> - <th v-if="checkedList.indexOf('djsj') > -1">寰呮満鏃堕棿(s)</th> - <th v-if="checkedList.indexOf('gjsj') > -1">鍏虫満鏃堕棿(s)</th> - </template> - </tr> -<!-- <tr>--> -<!-- <th rowspan="2">骞冲潎鍊�</th>--> -<!-- </tr>--> - </thead> - <tbody> - <tr class="mathData" v-for="(item, index) in dataList"> - <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="tdgu3 kaitou">{{item.equipmentId}}</td> - <td class="tdgu4 kaitou">{{item.equipmentName}}</td> - <td class="tdgu5 kaitou">{{item.equipmentType}}</td> - <td class="tdgu6 kaitou">{{item.shiftSubName}}</td> - - <!--<td>{{item.tierType}}</td>--> - <template v-for="(tableHead, index) in item.dataList"> - <!--<td :style="{background:tableHead.color }" v-if='tableHead.utilizationRate !== 0'>{{tableHead.utilizationRate | numFilter}}</td>--> - <!--<td :style="{background:tableHead.color }" v-if='tableHead.lyl == 0 && tableHead.status == 1'>缁翠慨</td>--> - <!--<td :style="{background:tableHead.color }" v-if='tableHead.lyl == 0 && tableHead.status == 2'>浼戠彮</td>--> - <!--<td :style="{background:tableHead.color }" v-if='tableHead.lyl == 0 && tableHead.status == 10'>{{tableHead.lyl | numFilter}}</td>--> - <!--<td :style="{background:tableHead.color }" v-if='tableHead.lyl == 0 && tableHead.status == 11'>鏈绠�</td>--> - <!--<td :style="{background:tableHead.color }" v-if='tableHead.lyl == 0 && tableHead.status == 12'>鏃犵彮娆�</td>--> - <td :style="{background:tableHead.color }">{{tableHead.utilizationRate | numFilter}}</td> - <!--<td :style="{background:tableHead.color }" v-if="checkedList.indexOf('gzl') > -1">--> - <!--{{tableHead.gzl | numFilter}}--> - <!--</td>--> - <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('kjsj') > -1"> - {{tableHead.openLong}} - </td> - <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('jgsj') > -1"> - {{tableHead.processLong}} - </td> - <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('djsj') > -1"> - {{tableHead.waitLong}} - </td> - <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('gjsj') > -1"> - {{tableHead.closeLong}} - </td> - <!--<td :style="{background:item[tableHead].color }" v-if="checkedList.indexOf('gjsj') > -1">--> - <!--{{item[tableHead].gjsj}}--> - <!--</td>--> - </template> - <!--<td :style="{background:item.average.color }" >{{item.average.lyl | numFilter}}</td>--> - </tr> - </tbody> - </table> </div> + <!--<div style="width: 530px;position:absolute;top: 10px; right: 0;">--> + <!--<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>--> + <!--</tr>--> + <!--</table>--> + <!--</div>--> </div> + <a-spin :spinning="spinning"> + <div class="container" id="EfficiencyShift" 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"> + <thead> + <tr class="thead fixed equipname"> + <th class="thgu dong1 name" rowspan="2" style="min-width: 50px; max-width: 50px;width: 50px;">鍏徃</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 dong7 name" rowspan="2" style="min-width: 100px; max-width: 100px;width: 100px;">鐝</th> + <template v-for="(tableHead, index) in tableHeads"> + <th class="timeth" :colspan="checkedList.length">{{tableHead}}</th> + </template> + <!--average--> + <!--<th class="thgu dong4 name" rowspan="2" style="min-width: 100px; max-width: 150px;width: 150px;">骞冲潎鍊�(鐝鍒╃敤鐜�)</th>--> + + </tr> + <tr class="thead notfixed gudingth"> + <template v-for="(tableHead, index) in tableHeads"> + <th>鐝鍒╃敤鐜�(%)</th> + <!--<th v-if="checkedList.indexOf('gzl') > -1">鏁呴殰鐜�(%)</th>--> + <!--<th v-if="checkedList.indexOf('processingLong') > -1">杩愯鏃堕棿(s)</th>--> + <!--<th v-if="checkedList.indexOf('totalLong') > -1">鏈夋晥鏃堕棿(s)</th>--> + <!--<th v-if="checkedList.indexOf('faultLong') > -1">鏁呴殰鏃堕棿(s)</th>--> + <!--<!–<th v-if="checkedList.indexOf('gjsj') > -1">鍏虫満鏃堕棿(s)</th>–>--> + <th v-if="checkedList.indexOf('kjsj') > -1">寮�鏈烘椂闂�(灏忔椂)</th> + <th v-if="checkedList.indexOf('jgsj') > -1">鍔犲伐鏃堕棿(灏忔椂)</th> + <th v-if="checkedList.indexOf('djsj') > -1">寰呮満鏃堕棿(灏忔椂)</th> + <th v-if="checkedList.indexOf('gjsj') > -1">鍏虫満鏃堕棿(灏忔椂)</th> + </template> + </tr> + </thead> + <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="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> + <td class="tdgu6 kaitou">{{item.shiftSubName}}</td> + </template> + + <template v-else> + <td colspan="7" class="tdgu kaitou">{{item.level1}}</td> + </template> + <!--<td>{{item.tierType}}</td>--> + <template v-for="(tableHead, index) in item.dataList"> + <!--<td :style="{background:tableHead.color }" v-if='tableHead.utilizationRate !== 0'>{{tableHead.utilizationRate | numFilter}}</td>--> + <!--<td :style="{background:tableHead.color }" v-if='tableHead.lyl == 0 && tableHead.status == 1'>缁翠慨</td>--> + <!--<td :style="{background:tableHead.color }" v-if='tableHead.lyl == 0 && tableHead.status == 2'>浼戠彮</td>--> + <!--<td :style="{background:tableHead.color }" v-if='tableHead.lyl == 0 && tableHead.status == 10'>{{tableHead.lyl | numFilter}}</td>--> + <!--<td :style="{background:tableHead.color }" v-if='tableHead.lyl == 0 && tableHead.status == 11'>鏈绠�</td>--> + <!--<td :style="{background:tableHead.color }" v-if='tableHead.lyl == 0 && tableHead.status == 12'>鏃犵彮娆�</td>--> + <td :style="{background:tableHead.color }">{{tableHead.utilizationRate | numFilter}}</td> + <!--<td :style="{background:tableHead.color }" v-if="checkedList.indexOf('gzl') > -1">--> + <!--{{tableHead.gzl | numFilter}}--> + <!--</td>--> + <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('kjsj') > -1"> + {{tableHead.openLong | getFormattedTime}} + </td> + <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('jgsj') > -1"> + {{tableHead.processLong | getFormattedTime}} + </td> + <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('djsj') > -1"> + {{tableHead.waitLong | getFormattedTime}} + </td> + <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('gjsj') > -1"> + {{tableHead.closeLong | getFormattedTime}} + </td> + <!--<td :style="{background:item[tableHead].color }" v-if="checkedList.indexOf('gjsj') > -1">--> + <!--{{item[tableHead].gjsj}}--> + <!--</td>--> + </template> + <!--<td :style="{background:item.average.color }" >{{item.average.lyl | numFilter}}</td>--> + </tr> + </tbody> + </table> + </div> + </div> + </a-spin> </div> </div> </template> @@ -164,6 +186,7 @@ allowClear:true, allowClearSu:true, dates: [], + selectList:[], identifying: [], queryParam: {}, queryParamEquip:{}, @@ -186,11 +209,13 @@ list: '/mdc/efficiencyReport/efficiencyShiftList', listByType: '/mdc/MdcUtilizationRate/getByType', initShiftList: '/mdc/mdcMdcShift/initShiftList', - initShiftSubList: '/mdc/mdcShiftSub/initShiftSubList' + initShiftSubList: '/mdc/mdcShiftSub/initShiftSubList', + queryEquipmentType: '/mdc/mdcEquipmentType/queryEquipmentType' }, tableHeads: [], shiftList: [], - shiftSubList: [] + shiftSubList: [], + spinning:false } }, props: { nodeTree: '', Type:'',nodePeople: '' }, @@ -202,6 +227,7 @@ this.queryParam.endTime = moment(this.dates[1]).format('YYYYMMDD') this.queryParam.typeTree = "1" this.loadData(); + this.queryGroup() }, watch: { Type(valmath){ @@ -241,7 +267,20 @@ } else { return '0' } - } + }, + + /** + * 鏍煎紡鍖栨椂闂� + * @param seconds 绉掓暟 + * @returns '' 鏍煎紡鍖栧悗鏃堕棿瀛楃涓� + */ + getFormattedTime(seconds) { + if (seconds) { + return parseFloat((seconds / 3600).toFixed(2)) + '灏忔椂' + } else { + return '0' + } + }, }, methods: { checkSameData(dataList){ @@ -453,6 +492,7 @@ // this.onClearSelected() }, loadData() { + this.spinning=true this.tableHeads = [] this.dataList = [] getAction(this.url.list, this.queryParam).then(res => { @@ -465,6 +505,26 @@ this.combineCell(); // this.initDeviceType(this.dataList) } + }).finally(()=>{ + this.spinning=false + }) + }, + queryGroup() { + getAction(this.url.queryEquipmentType).then(res => { + if (res.success) { + this.selectList = res.result + // this.selectList = res.result.map((item, index, arr) => { + // return { label: item.id, value: item.equipmentTypeName + '' } + // }) + } else { + // this.$message.warning(res.message) + this.$notification.warning({ + message: '娑堟伅', + description: res.message + }) + } + }).finally(() => { + this.loading = false }) } } @@ -515,12 +575,12 @@ } .table tbody tr .tdgu5{ position: sticky; - left: 400px; + left: 412px; z-index: 2; } .table tbody tr .tdgu6{ position: sticky; - left: 500px; + left: 512px; z-index: 2; } @@ -561,11 +621,11 @@ } .table2 thead .equipname .dong6{ z-index: 5; - left: 400px; + left: 412px; } .table2 thead .equipname .dong7{ z-index: 6; - left: 500px; + left: 512px; } @media screen and (min-width: 1920px){ @@ -654,9 +714,9 @@ .dataContent .mathData .tdd { /*display: none;*/ } - .seach-content{ - display: flex; - justify-content: space-between; - } + /*.seach-content{*/ + /*display: flex;*/ + /*justify-content: space-between;*/ + /*}*/ </style> \ No newline at end of file diff --git a/src/views/mdc/base/modules/equipmentAvailCompare/equipmentAvailCompareMain.vue b/src/views/mdc/base/modules/equipmentAvailCompare/equipmentAvailCompareMain.vue index 9f83208..51b2e84 100644 --- a/src/views/mdc/base/modules/equipmentAvailCompare/equipmentAvailCompareMain.vue +++ b/src/views/mdc/base/modules/equipmentAvailCompare/equipmentAvailCompareMain.vue @@ -125,6 +125,7 @@ // this.$set(this.queryParam, 'tierName', val.title) this.queryParamEquip.parentId = '' this.queryParams.equipmentId = val.equipmentId + this.queryParams.equipmentName = val.equipmentName this.queryParamEquip.equipmentId = val.equipmentId this.searchQuery() } else { diff --git a/src/views/mdc/base/modules/equipmentDayAvail/equipmentDayAvailMain.vue b/src/views/mdc/base/modules/equipmentDayAvail/equipmentDayAvailMain.vue index 223771c..4c72471 100644 --- a/src/views/mdc/base/modules/equipmentDayAvail/equipmentDayAvailMain.vue +++ b/src/views/mdc/base/modules/equipmentDayAvail/equipmentDayAvailMain.vue @@ -138,6 +138,8 @@ // this.$set(this.queryParam, 'tierName', val.title) this.queryParamEquip.parentId = '' this.queryParams.equipmentId = val.equipmentId + this.queryParams.equipmentName = val.equipmentName + console.log('XXXval=', val) this.queryParamEquip.equipmentId = val.equipmentId this.searchQuery() } else { diff --git a/src/views/mdc/base/modules/mdcDriveTypeParamConfig/MdcDriveTypeParamConfigForm.vue b/src/views/mdc/base/modules/mdcDriveTypeParamConfig/MdcDriveTypeParamConfigForm.vue index 922bbe8..161ebd0 100644 --- a/src/views/mdc/base/modules/mdcDriveTypeParamConfig/MdcDriveTypeParamConfigForm.vue +++ b/src/views/mdc/base/modules/mdcDriveTypeParamConfig/MdcDriveTypeParamConfigForm.vue @@ -139,7 +139,7 @@ ], englishName: [ { required: true, message: '璇疯緭鍏ヨ嫳鏂囧悕绉�!' }, - { pattern: /^.{6,18}$/, message: '璇疯緭鍏�6鍒�18浣嶄换鎰忓瓧绗�!' }, + { pattern: /^.{2,18}$/, message: '璇疯緭鍏�2鍒�18浣嶄换鎰忓瓧绗�!' ,trigger:'blur'}, ], showFlag: [ { required: true, message: '璇疯緭鍏ユ樉绀烘爣蹇�!' }, diff --git a/src/views/mdc/base/modules/mdcPassRate/mdcPassRateModal.vue b/src/views/mdc/base/modules/mdcPassRate/mdcPassRateModal.vue index 8fc91e2..dffd018 100644 --- a/src/views/mdc/base/modules/mdcPassRate/mdcPassRateModal.vue +++ b/src/views/mdc/base/modules/mdcPassRate/mdcPassRateModal.vue @@ -7,7 +7,7 @@ <a-col :span="12"> <a-form-item label="璁惧缁�" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-input-search :readOnly="true" v-decorator="['equipmentIds', validatorRules.equipmentIds]" - @search="deviceSearch" enter-button/> + @search="deviceSearch" enter-button placeholder="璇烽�夋嫨璁惧"/> </a-form-item> </a-col> @@ -39,15 +39,13 @@ </a-row> </a-form> </a-spin> - <mdc-pass-rate-modal-list ref="deviceRepairListModel" @sendSelectionRows="getDeviceRows"></mdc-pass-rate-modal-list> - + <select-device-modal ref="selectDeviceModal" @selectFinished="selectOK" :title="'閫夋嫨璁惧'"/> </a-modal> </template> <script> import moment from 'moment' import pick from 'lodash.pick' - import mdcPassRateModalList from './mdcPassRateModalList' // import JDate from './JDate' import { getAction, @@ -57,10 +55,11 @@ import { duplicateCheck } from '@/api/api' + import SelectDeviceModal from '../../../../system/modules/SelectDeviceModal' export default { name: 'mdcPassRateModal', - components: {mdcPassRateModalList}, + components: { SelectDeviceModal}, props: {}, data() { return { @@ -197,9 +196,10 @@ // }) }, deviceSearch() { - this.$refs.deviceRepairListModel.openPage() - this.$refs.deviceRepairListModel.title = '閫夋嫨璁惧' - this.$refs.deviceRepairListModel.disableSubmit = false + this.$refs.selectDeviceModal.visible = true + this.$refs.selectDeviceModal.selectedRowKeys = [] + this.$refs.selectDeviceModal.selectedRows = [] + this.$refs.selectDeviceModal.checkedKeys = this.form.getFieldValue('equipmentIds') ? this.form.getFieldValue('equipmentIds').split(',') : [] }, //绾ц仈妗唎nChange浜嬩欢 // onChange(value) { @@ -347,6 +347,22 @@ }, checkboxChange(e) { this.checked = e.target.checked + }, + + /** + * 閫夋嫨宸叉湁璁惧鍚庣偣鍑荤‘瀹氭椂瑙﹀彂 + * @param data 宸查�夋嫨鐨勮澶� + */ + selectOK(data) { + // let params = {} + // params.equipmentIdList = [] + // for (var a = 0; a < data.length; a++) { + // params.equipmentIdList.push(data[a]) + // } + console.log('data=', data) + this.form.setFieldsValue({ + equipmentIds: data.join(',') + }) } } } diff --git a/src/views/mdc/base/modules/mdcStandardProcessDuration/MdcStandardProcessDurationModal.vue b/src/views/mdc/base/modules/mdcStandardProcessDuration/MdcStandardProcessDurationModal.vue index 807a942..0cc0796 100644 --- a/src/views/mdc/base/modules/mdcStandardProcessDuration/MdcStandardProcessDurationModal.vue +++ b/src/views/mdc/base/modules/mdcStandardProcessDuration/MdcStandardProcessDurationModal.vue @@ -7,7 +7,7 @@ <a-col :span="24"> <a-form-item label="璁惧缁�" :labelCol="labelColLong" :wrapperCol="wrapperColLong"> <a-input-search :readOnly="true" v-decorator="['equipmentIds', validatorRules.equipmentIds]" - @search="deviceSearch" enter-button/> + @search="deviceSearch" enter-button placeholder="璇烽�夋嫨璁惧"/> </a-form-item> </a-col> </a-row> @@ -44,7 +44,7 @@ </a-row> </a-form> </a-spin> - <mdc-standard-process-duration-modal-list ref="deviceRepairListModel" @sendSelectionRows="getDeviceRows"></mdc-standard-process-duration-modal-list> + <select-device-modal ref="selectDeviceModal" @selectFinished="selectOK" :title="'閫夋嫨璁惧'"/> </a-modal> </template> @@ -52,7 +52,6 @@ <script> import moment from 'moment' import pick from 'lodash.pick' - import MdcStandardProcessDurationModalList from './MdcStandardProcessDurationModalList' // import JDate from './JDate' import { getAction, @@ -62,10 +61,11 @@ import { duplicateCheck } from '@/api/api' + import SelectDeviceModal from '../../../../system/modules/SelectDeviceModal' export default { name: 'MdcStandardProcessDurationModal', - components: {MdcStandardProcessDurationModalList}, + components: { SelectDeviceModal }, props: {}, data() { return { @@ -210,9 +210,10 @@ // }) }, deviceSearch() { - this.$refs.deviceRepairListModel.openPage() - this.$refs.deviceRepairListModel.title = '閫夋嫨璁惧' - this.$refs.deviceRepairListModel.disableSubmit = false + this.$refs.selectDeviceModal.visible = true + this.$refs.selectDeviceModal.selectedRowKeys = [] + this.$refs.selectDeviceModal.selectedRows = [] + this.$refs.selectDeviceModal.checkedKeys = this.form.getFieldValue('equipmentIds') ? this.form.getFieldValue('equipmentIds').split(',') : [] }, //绾ц仈妗唎nChange浜嬩欢 // onChange(value) { @@ -348,6 +349,22 @@ }, checkboxChange(e) { this.checked = e.target.checked + }, + + /** + * 閫夋嫨宸叉湁璁惧鍚庣偣鍑荤‘瀹氭椂瑙﹀彂 + * @param data 宸查�夋嫨鐨勮澶� + */ + selectOK(data) { + // let params = {} + // params.equipmentIdList = [] + // for (var a = 0; a < data.length; a++) { + // params.equipmentIdList.push(data[a]) + // } + console.log('data=', data) + this.form.setFieldsValue({ + equipmentIds: data.join(',') + }) } } } diff --git a/src/views/mdc/base/modules/mdcUtilizationRate/MdcUtilizationRateModel.vue b/src/views/mdc/base/modules/mdcUtilizationRate/MdcUtilizationRateModel.vue index 8c83625..a9059be 100644 --- a/src/views/mdc/base/modules/mdcUtilizationRate/MdcUtilizationRateModel.vue +++ b/src/views/mdc/base/modules/mdcUtilizationRate/MdcUtilizationRateModel.vue @@ -32,6 +32,13 @@ </a-form-item> </a-col> </a-row> + <a-row :gutter="24"> + <a-col :span="24"> + <a-form-item label="棰滆壊" :labelCol="labelCol" :wrapperCol="wrapperCol"> + <a-input type="color" v-decorator="['rateParameterColor',validatorRules.rateParameterColor]"></a-input> + </a-form-item> + </a-col> + </a-row> </a-form> </a-spin> </a-modal> @@ -95,7 +102,7 @@ this.model = Object.assign({}, record) this.visible = true this.$nextTick(() => { - this.form.setFieldsValue(pick(this.model, 'rateParameterCategory', 'rateParameterLevel', 'minimumRange', 'maximumRange')) + this.form.setFieldsValue(pick(this.model, 'rateParameterCategory', 'rateParameterLevel', 'minimumRange', 'maximumRange', 'rateParameterColor')) }) }, close() { @@ -116,16 +123,16 @@ if (res.success) { // that.$message.success("淇濆瓨鎴愬姛") that.$notification.success({ - message:'娑堟伅', - description:"淇濆瓨鎴愬姛" - }); + message: '娑堟伅', + description: '淇濆瓨鎴愬姛' + }) that.$emit('ok', res.result) } else { // that.$message.warning(res.message) that.$notification.warning({ - message:'娑堟伅', - description:res.message - }); + message: '娑堟伅', + description: res.message + }) } }).finally(() => { that.confirmLoading = false diff --git a/src/views/mdc/base/modules/openRateFractionAnalysis/openRateFractionAnalysisMain.vue b/src/views/mdc/base/modules/openRateFractionAnalysis/openRateFractionAnalysisMain.vue index c8900d9..4c809b1 100644 --- a/src/views/mdc/base/modules/openRateFractionAnalysis/openRateFractionAnalysisMain.vue +++ b/src/views/mdc/base/modules/openRateFractionAnalysis/openRateFractionAnalysisMain.vue @@ -115,7 +115,10 @@ }, tableHeads: [], XData: [0], - YData: [0] + YData: [0], + isLazyRequest: '',// 鏄惁寮�鍚噿鍔犺浇 + requestAlldataSize: 8,// 鎬诲叡璇锋眰鐨勫垪琛ㄩ」鏁扮洰 + everyRequestDataSize: 15// 姣忔璇锋眰鐨勫垪琛ㄩ」鏁扮洰 } }, props: { nodeTree: '', Type: '', nodePeople: '' }, @@ -131,6 +134,12 @@ this.queryParam.typeTree = '1' this.loadData1() + }, + mounted() { + this.tableScroll = document.querySelector('.table2') + }, + beforeDestroy() { + this.tableScroll.removeEventListener('scroll', this.tableScrollX) }, watch: { Type(valmath) { @@ -213,9 +222,12 @@ dateParamChange(v1, v2) { this.queryParam.startDate = v2[0] this.queryParam.endDate = v2[1] + this.dates = [v1[0], v1[1]] }, searchQuery() { - if (this.queryParam.startTime && this.queryParam.endTime && this.dates && this.dates.length > 0) { + this.queryParam.startDate = moment(this.dates[0]).format('YYYYMMDD') + this.queryParam.endDate = moment(this.dates[1]).format('YYYYMMDD') + if (this.queryParam.startTime && this.queryParam.endTime && this.dates[0] && this.dates[1]) { if (this.queryParam.typeTree == '1') { this.queryParam.parentId = this.queryParamEquip.parentId this.queryParam.equipmentId = this.queryParamEquip.equipmentId @@ -223,6 +235,7 @@ this.queryParam.parentId = this.queryParamPeople.parentId this.queryParam.equipmentId = '' } + this.requestAlldataSize = moment.duration(moment(this.queryParam.endDate) - moment(this.queryParam.startDate), 'millisecond').asDays() + 1 this.loadData1() } else { this.$notification.warning({ @@ -303,9 +316,16 @@ // } // } loadData1() { - this.loading=true + this.loading = true this.tableHeads = [] this.dataList = [] + // 鑻ユ棩鏈熼�夋嫨鍣ㄨ缃殑鏌ヨ璇锋眰鏁伴噺瓒呰繃15鏉″垯寮�鍚噿鍔犺浇 + if (this.requestAlldataSize > 15) { + // 寮�鍚噿鍔犺浇鍚庡皢缁撴潫鏃ユ湡璁剧疆涓哄紑濮嬫棩鏈熶箣鍚庣殑14澶╋紝鍗冲厛鏌ヨ15澶╁唴鐨勬暟鎹� + this.queryParam.endDate = moment(this.queryParam.startDate).add(this.everyRequestDataSize - 1, 'days').format('YYYYMMDD') + this.isLazyRequest = true + this.tableScroll.removeEventListener('scroll', this.tableScrollX) // 涓洪伩鍏嶆粴鍔ㄦ潯鏈夋粴鍔ㄨ窛绂诲悗鍚庣偣鍑绘煡璇㈡寜閽Е鍙戞粴鍔ㄤ簨浠讹紝鍥犳鍦ㄨЕ鍙戜簨浠跺墠绉婚櫎浜嬩欢 + } getAction(this.url.efficiencyList, this.queryParam).then(res => { if (res.success) { this.tableHeads = res.result.dates @@ -316,10 +336,10 @@ // this.checkSameData2(this.dataList) // this.combineCell(); // this.initDeviceType(this.dataList) - + this.tableScroll.addEventListener('scroll', this.tableScrollX) } - }).finally(()=>{ - this.loading=false + }).finally(() => { + this.loading = false }) }, draw() { @@ -379,6 +399,41 @@ ] } openRateTrendAnalysisChart.setOption(openRateTrendChartOptions, true) + }, + + /** + * 婊氬姩鏉¤Е搴曞埛鏂拌〃鏍兼暟鎹� + */ + tableScrollX() { + // 褰撴粴鍔ㄦ潯瑙﹀簳涓旀噿鍔犺浇寮�鍚椂瑙﹀彂婊氬姩鏉¤Е搴曞埛鏂� + if (Math.ceil(this.tableScroll.scrollLeft + this.tableScroll.clientWidth) + 1 >= this.tableScroll.scrollWidth && this.isLazyRequest) { + this.loading = true + this.queryParam.startDate = moment(this.queryParam.endDate).add(1, 'days').format('YYYYMMDD') + // 鍒ゆ柇璁剧疆鎳掑姞杞藉悗鐨勭粨鏉熸椂闂存槸鍚﹁秴杩囨椂闂撮�夋嫨鍣ㄤ腑璁剧疆鐨勭粨鏉熸椂闂� + if (moment(this.queryParam.endDate).add(this.everyRequestDataSize - 1, 'days').format('YYYYMMDD') - moment(this.dates[1]).format('YYYYMMDD') < 0) { + //鍐嶆鏌ヨ鍚�15澶╁唴鐨勬暟鎹� + this.queryParam.endDate = moment(this.queryParam.endDate).add(this.everyRequestDataSize, 'days').format('YYYYMMDD') + } else { + // 濡傛灉涓嶅皬浜庢椂闂撮�夋嫨鍣ㄤ腑璁剧疆鐨勬椂闂村垯璁剧疆璇锋眰缁撴潫鏃ユ湡涓烘椂闂撮�夋嫨鍣ㄤ腑璁剧疆鐨勭粨鏉熸椂闂村苟涓斿叧闂噿鍔犺浇锛堟剰鍛崇潃鏈�鍚庝竴娆¤Е搴曞埛鏂帮級 + this.queryParam.endDate = moment(this.dates[1]).format('YYYYMMDD') + this.isLazyRequest = false + } + getAction(this.url.efficiencyList, this.queryParam).then(res => { + if (res.success) { + this.tableHeads = [...this.tableHeads, ...res.result.dates] + this.dataList.forEach(item1 => { + res.result.mdcEfficiencyList.forEach(item2 => { + if (item1.equipmentId === item2.equipmentId) { + item1.dataList = [...item1.dataList, ...item2.dataList] + } + }) + }) + this.draw() + } + }).finally(() => { + this.loading = false + }) + } } } } diff --git a/src/views/mdc/base/modules/openRateTrendAnalysis/openRateTrendAnalysisMain.vue b/src/views/mdc/base/modules/openRateTrendAnalysis/openRateTrendAnalysisMain.vue index 6056ac3..fadbf53 100644 --- a/src/views/mdc/base/modules/openRateTrendAnalysis/openRateTrendAnalysisMain.vue +++ b/src/views/mdc/base/modules/openRateTrendAnalysis/openRateTrendAnalysisMain.vue @@ -108,7 +108,10 @@ }, tableHeads: [], XData: [0], - YData: [0] + YData: [0], + isLazyRequest: '',// 鏄惁寮�鍚噿鍔犺浇 + requestAlldataSize: 8,// 鎬诲叡璇锋眰鐨勫垪琛ㄩ」鏁扮洰 + everyRequestDataSize: 15// 姣忔璇锋眰鐨勫垪琛ㄩ」鏁扮洰 } }, props: { nodeTree: '', Type: '', nodePeople: '' }, @@ -121,6 +124,12 @@ this.queryParam.endDate = moment(this.dates[1]).format('YYYYMMDD') this.queryParam.typeTree = '1' this.loadData1() + }, + mounted() { + this.tableScroll = document.querySelector('.table2') + }, + beforeDestroy() { + this.tableScroll.removeEventListener('scroll', this.tableScrollX) }, watch: { Type(valmath) { @@ -221,9 +230,13 @@ dateParamChange(v1, v2) { this.queryParam.startDate = v2[0] this.queryParam.endDate = v2[1] + this.dates = [v1[0], v1[1]] }, searchQuery() { - if (this.dates && this.dates.length > 0) { + console.log('dates', this.dates) + this.queryParam.startDate = moment(this.dates[0]).format('YYYYMMDD') + this.queryParam.endDate = moment(this.dates[1]).format('YYYYMMDD') + if (this.dates[0] && this.dates[1]) { if (this.queryParam.typeTree == '1') { this.queryParam.parentId = this.queryParamEquip.parentId this.queryParam.equipmentId = this.queryParamEquip.equipmentId @@ -231,6 +244,7 @@ this.queryParam.parentId = this.queryParamPeople.parentId this.queryParam.equipmentId = '' } + this.requestAlldataSize = moment.duration(moment(this.queryParam.endDate) - moment(this.queryParam.startDate), 'millisecond').asDays() + 1 this.loadData1() } else { this.$notification.warning({ @@ -313,6 +327,13 @@ this.loading = true this.tableHeads = [] this.dataList = [] + // 鑻ユ棩鏈熼�夋嫨鍣ㄨ缃殑鏌ヨ璇锋眰鏁伴噺瓒呰繃15鏉″垯寮�鍚噿鍔犺浇 + if (this.requestAlldataSize > 15) { + // 寮�鍚噿鍔犺浇鍚庡皢缁撴潫鏃ユ湡璁剧疆涓哄紑濮嬫棩鏈熶箣鍚庣殑14澶╋紝鍗冲厛鏌ヨ15澶╁唴鐨勬暟鎹� + this.queryParam.endDate = moment(this.queryParam.startDate).add(this.everyRequestDataSize - 1, 'days').format('YYYYMMDD') + this.isLazyRequest = true + this.tableScroll.removeEventListener('scroll', this.tableScrollX) // 涓洪伩鍏嶆粴鍔ㄦ潯鏈夋粴鍔ㄨ窛绂诲悗鍚庣偣鍑绘煡璇㈡寜閽Е鍙戞粴鍔ㄤ簨浠讹紝鍥犳鍦ㄨЕ鍙戜簨浠跺墠绉婚櫎浜嬩欢 + } getAction(this.url.efficiencyList, this.queryParam).then(res => { if (res.success) { this.tableHeads = res.result.dates @@ -323,6 +344,7 @@ // this.checkSameData2(this.dataList) // this.combineCell(); // this.initDeviceType(this.dataList) + this.tableScroll.addEventListener('scroll', this.tableScrollX) } }).finally(() => { this.loading = false @@ -385,6 +407,41 @@ ] } openRateTrendAnalysisChart.setOption(openRateTrendChartOptions, true) + }, + + /** + * 婊氬姩鏉¤Е搴曞埛鏂拌〃鏍兼暟鎹� + */ + tableScrollX() { + // 褰撴粴鍔ㄦ潯瑙﹀簳涓旀噿鍔犺浇寮�鍚椂瑙﹀彂婊氬姩鏉¤Е搴曞埛鏂� + if (Math.ceil(this.tableScroll.scrollLeft + this.tableScroll.clientWidth) + 1 >= this.tableScroll.scrollWidth && this.isLazyRequest) { + this.loading = true + this.queryParam.startDate = moment(this.queryParam.endDate).add(1, 'days').format('YYYYMMDD') + // 鍒ゆ柇璁剧疆鎳掑姞杞藉悗鐨勭粨鏉熸椂闂存槸鍚﹁秴杩囨椂闂撮�夋嫨鍣ㄤ腑璁剧疆鐨勭粨鏉熸椂闂� + if (moment(this.queryParam.endDate).add(this.everyRequestDataSize - 1, 'days').format('YYYYMMDD') - moment(this.dates[1]).format('YYYYMMDD') < 0) { + //鍐嶆鏌ヨ鍚�15澶╁唴鐨勬暟鎹� + this.queryParam.endDate = moment(this.queryParam.endDate).add(this.everyRequestDataSize, 'days').format('YYYYMMDD') + } else { + // 濡傛灉涓嶅皬浜庢椂闂撮�夋嫨鍣ㄤ腑璁剧疆鐨勬椂闂村垯璁剧疆璇锋眰缁撴潫鏃ユ湡涓烘椂闂撮�夋嫨鍣ㄤ腑璁剧疆鐨勭粨鏉熸椂闂村苟涓斿叧闂噿鍔犺浇锛堟剰鍛崇潃鏈�鍚庝竴娆¤Е搴曞埛鏂帮級 + this.queryParam.endDate = moment(this.dates[1]).format('YYYYMMDD') + this.isLazyRequest = false + } + getAction(this.url.efficiencyList, this.queryParam).then(res => { + if (res.success) { + this.tableHeads = [...this.tableHeads, ...res.result.dates] + this.dataList.forEach(item1 => { + res.result.mdcEfficiencyList.forEach(item2 => { + if (item1.equipmentId === item2.equipmentId) { + item1.dataList = [...item1.dataList, ...item2.dataList] + } + }) + }) + this.draw() + } + }).finally(() => { + this.loading = false + }) + } } } } diff --git a/src/views/mdc/common/BaseTree.vue b/src/views/mdc/common/BaseTree.vue index ed5229a..1eebf9d 100644 --- a/src/views/mdc/common/BaseTree.vue +++ b/src/views/mdc/common/BaseTree.vue @@ -149,6 +149,7 @@ this.allTreeKeys = [] this.treeDataSource = res.result this.generateList(res.result) + this.expandedKeys=this.allTreeKeys } else { this.$message.warn(res.message) } diff --git a/src/views/system/ProductionManager.vue b/src/views/system/ProductionManager.vue index b60c346..9a3a72f 100644 --- a/src/views/system/ProductionManager.vue +++ b/src/views/system/ProductionManager.vue @@ -8,12 +8,15 @@ <a-button @click="handleAdd(1)" type="primary">娣诲姞杞﹂棿</a-button> <a-button @click="handleAdd(2)" type="primary">娣诲姞涓嬬骇</a-button> <a-button type="primary" icon="download" @click="handleExportXls('杞﹂棿淇℃伅')">瀵煎嚭</a-button> - <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel"> + <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" + :action="importExcelUrl" @change="handleImportExcel"> <a-button type="primary" icon="import">瀵煎叆</a-button> </a-upload> - <a-button title="鍒犻櫎澶氭潯鏁版嵁" @click="batchDel" type="default">鎵归噺鍒犻櫎</a-button> + <a-button @click="handleDelete" v-if="selectedKeys.length>0">鍒犻櫎</a-button> + <a-button title="鍒犻櫎澶氭潯鏁版嵁" @click="batchDel" v-if="checkedKeys.length>0">鎵归噺鍒犻櫎</a-button> <!--<a-button @click="refresh" type="default" icon="reload" :loading="loading">鍒锋柊</a-button>--> </a-row> + ` <div style="background: #fff;padding-left:16px;height: 100%; margin-top: 5px"> <a-alert type="info" :showIcon="true"> <div slot="message"> @@ -24,9 +27,32 @@ <a-input-search @search="onSearch" style="width:100%;margin-top: 10px" placeholder="璇疯緭鍏ヨ溅闂村悕绉�"/> <!-- 鏍�--> <a-col :md="10" :sm="24"> - <template> - <a-dropdown :trigger="[this.dropTrigger]" @visibleChange="dropStatus"> - <span style="user-select: none"> + <!--<template>--> + <!--<a-dropdown :trigger="[this.dropTrigger]" @visibleChange="dropStatus">--> + <!--<span style="user-select: none">--> + <!--<a-tree--> + <!--checkable--> + <!--multiple--> + <!--@select="onSelect"--> + <!--@check="onCheck"--> + <!--@rightClick="rightHandle"--> + <!--:selectedKeys="selectedKeys"--> + <!--:checkedKeys="checkedKeys"--> + <!--:treeData="departTree"--> + <!--:checkStrictly="checkStrictly"--> + <!--:expandedKeys="iExpandedKeys"--> + <!--:autoExpandParent="autoExpandParent"--> + <!--@expand="onExpand"/>--> + <!--</span>--> + <!--<!–鏂板鍙抽敭鐐瑰嚮浜嬩欢,鍜屽鍔犳坊鍔犲拰鍒犻櫎鍔熻兘–>--> + + <!--<a-menu slot="overlay">--> + <!--<a-menu-item @click="handleAdd(3)" key="1">娣诲姞</a-menu-item>--> + <!--<a-menu-item @click="handleDelete" key="2">鍒犻櫎</a-menu-item>--> + <!--<a-menu-item @click="closeDrop" key="3">鍙栨秷</a-menu-item>--> + <!--</a-menu>--> + <!--</a-dropdown>--> + <!--</template>--> <a-tree checkable multiple @@ -40,15 +66,6 @@ :expandedKeys="iExpandedKeys" :autoExpandParent="autoExpandParent" @expand="onExpand"/> - </span> - <!--鏂板鍙抽敭鐐瑰嚮浜嬩欢,鍜屽鍔犳坊鍔犲拰鍒犻櫎鍔熻兘--> - <a-menu slot="overlay"> - <a-menu-item @click="handleAdd(3)" key="1">娣诲姞</a-menu-item> - <a-menu-item @click="handleDelete" key="2">鍒犻櫎</a-menu-item> - <a-menu-item @click="closeDrop" key="3">鍙栨秷</a-menu-item> - </a-menu> - </a-dropdown> - </template> </a-col> </div> </a-card> @@ -64,7 +81,8 @@ <a-menu-item key="6" @click="closeAll">鍚堝苟鎵�鏈�</a-menu-item> </a-menu> <a-button> - 鏍戞搷浣� <a-icon type="up" /> + 鏍戞搷浣� + <a-icon type="up"/> </a-button> </a-dropdown> </div> @@ -72,11 +90,11 @@ </a-col> <a-col :md="12" :sm="24"> <a-tabs defaultActiveKey="1"> - <a-tab-pane tab="鍩烘湰淇℃伅" key="1" > + <a-tab-pane tab="鍩烘湰淇℃伅" key="1"> <a-card :bordered="false" v-if="selectedKeys.length>0"> <a-form-model ref="form" :model="model" :rules="validatorRules"> <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="productionName" label="杞﹂棿鍚嶇О"> - <a-input placeholder="璇疯緭鍏ヤ骇绾�/杞﹂棿鍚嶇О" v-model="model.productionName" /> + <a-input placeholder="璇疯緭鍏ヤ骇绾�/杞﹂棿鍚嶇О" v-model="model.productionName"/> </a-form-model-item> <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="涓婄骇杞﹂棿"> <a-tree-select @@ -89,7 +107,7 @@ </a-tree-select> </a-form-model-item> <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鎺掑簭"> - <a-input-number v-model="model.departOrder" /> + <a-input-number v-model="model.productionOrder"/> </a-form-model-item> <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="澶囨敞"> <a-textarea placeholder="璇疯緭鍏ュ娉�" v-model="model.memo"/> @@ -100,7 +118,7 @@ <a-button @click="submitCurrForm" type="primary" htmlType="button" icon="form">淇濆瓨</a-button> </div> </a-card> - <a-card v-else > + <a-card v-else> <a-empty> <span slot="description"> 璇峰厛閫夋嫨涓�涓溅闂�! </span> </a-empty> @@ -111,65 +129,27 @@ <!--</a-tab-pane>--> <a-tab-pane tab="璁惧鍒楄〃" key="2" forceRender> <!--<depart-auth-modal/>--> - <production-equipment ref="departAuth"></production-equipment> + <production-equipment ref="departAuth"></production-equipment> </a-tab-pane> </a-tabs> </a-col> - <production-modal ref="departModal" @ok="loadTree"></production-modal> + <production-modal ref="departModal" @ok="loadTree"></production-modal> </a-row> </template> <script> import ProductionEquipment from './modules/ProductionManager/ProductionEquipment' - import {queryProductionTreeList, searchByKeywords, deleteByProduction} from '@/api/api' - import {httpAction, deleteAction} from '@/api/manage' - import {JeecgListMixin} from '@/mixins/JeecgListMixin' + import { queryProductionTreeList, searchByKeywords, deleteByProduction } from '@/api/api' + import { httpAction, deleteAction } from '@/api/manage' + import { JeecgListMixin } from '@/mixins/JeecgListMixin' import ProductionModal from './modules/ProductionManager/ProductionModal' - // 琛ㄥご - const columns = [ - { - title: '鏈烘瀯鍚嶇О', - dataIndex: 'departName' - }, - { - title: '鏈烘瀯绫诲瀷', - align: 'center', - dataIndex: 'orgType' - }, - { - title: '鏈烘瀯缂栫爜', - dataIndex: 'orgCode', - }, - { - title: '鎵嬫満鍙�', - dataIndex: 'mobile' - }, - { - title: '浼犵湡', - dataIndex: 'fax' - }, - { - title: '鍦板潃', - dataIndex: 'address' - }, - { - title: '鎺掑簭', - align: 'center', - dataIndex: 'departOrder' - }, - { - title: '鎿嶄綔', - align: 'center', - dataIndex: 'action', - scopedSlots: {customRender: 'action'} - } - ] + export default { name: 'ProductionManager', mixins: [JeecgListMixin], components: { ProductionEquipment, - ProductionModal, + ProductionModal }, data() { return { @@ -188,47 +168,47 @@ model: {}, dropTrigger: '', depart: {}, - columns: columns, disableSubmit: false, checkedKeys: [], selectedKeys: [], autoIncr: 1, currSelected: {}, - allTreeKeys:[], + allTreeKeys: [], checkStrictly: true, labelCol: { - xs: {span: 24}, - sm: {span: 5} + xs: { span: 24 }, + sm: { span: 5 } }, wrapperCol: { - xs: {span: 24}, - sm: {span: 16} + xs: { span: 24 }, + sm: { span: 16 } }, graphDatasource: { nodes: [], edges: [] }, validatorRules: { - productionName: [{required: true, message: '璇疯緭鍏ヤ骇绾�/杞﹂棿鍚嶇О!'}], + productionName: [{ required: true, message: '璇疯緭鍏ヤ骇绾�/杞﹂棿鍚嶇О!' }] }, url: { delete: '/mdc/mdcProduction/delete', edit: '/mdc/mdcProduction/edit', deleteBatch: '/mdc/mdcProduction/deleteBatch', - exportXlsUrl: "/mdc/mdcProduction/exportXls", - importExcelUrl: "/mdc/mdcProduction/importExcel", + exportXlsUrl: '/mdc/mdcProduction/exportXls', + importExcelUrl: '/mdc/mdcProduction/importExcel' }, - orgCategoryDisabled:false, + orgCategoryDisabled: false, + isIncludesNotLeaf: false } }, computed: { - importExcelUrl: function () { - return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`; + importExcelUrl: function() { + return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}` } }, methods: { loadData() { - this.refresh(); + this.refresh() }, loadTree() { var that = this @@ -237,13 +217,13 @@ queryProductionTreeList().then((res) => { if (res.success) { //閮ㄩ棬鍏ㄩ�夊悗锛屽啀娣诲姞閮ㄩ棬锛岄�変腑鏁伴噺澧炲 - this.allTreeKeys = []; + this.allTreeKeys = [] for (let i = 0; i < res.result.length; i++) { let temp = res.result[i] that.treeData.push(temp) that.departTree.push(temp) that.setThisExpandedKeys(temp) - that.getAllKeys(temp); + that.getAllKeys(temp) // console.log(temp.id) } this.loading = false @@ -263,11 +243,12 @@ this.loadTree() }, // 鍙抽敭鎿嶄綔鏂规硶 - rightHandle(node) { + rightHandle({ event, node }) { this.dropTrigger = 'contextmenu' - console.log(node.node.eventKey) - this.rightClickSelectedKey = node.node.eventKey - this.rightClickSelectedOrgCode = node.node.dataRef.orgCode + const record = node.dataRef + this.rightClickSelectedKey = record.id + this.rightClickSelected = record + this.rightClickSelectedOrgCode = record.orgCode }, onExpand(expandedKeys) { console.log('onExpand', expandedKeys) @@ -290,49 +271,71 @@ addRootNode() { this.$refs.nodeModal.add(this.currFlowId, '') }, - batchDel: function () { + batchDel: function() { console.log(this.checkedKeys) - if (this.checkedKeys.length <= 0) { - // this.$message.warning('璇烽�夋嫨涓�鏉¤褰曪紒') - this.$notification.warning({ - message:'娑堟伅', - description:"璇烽�夋嫨涓�鏉¤褰�" - }); - } else { - var ids = '' - for (var a = 0; a < this.checkedKeys.length; a++) { - ids += this.checkedKeys[a] + ',' - } - var that = this - this.$confirm({ - title: '纭鍒犻櫎', - content: '纭畾瑕佸垹闄ゆ墍閫変腑鐨� ' + this.checkedKeys.length + ' 鏉℃暟鎹紝浠ュ強瀛愯妭鐐规暟鎹悧?', - onOk: function () { - deleteAction(that.url.deleteBatch, {ids: ids}).then((res) => { - if (res.success) { - // that.$message.success(res.message) - that.$notification.warning({ - message:'娑堟伅', - description:res.message - }); - that.loadTree() - that.onClearSelected() - } else { - // that.$message.warning(res.message) - that.$notification.warning({ - message:'娑堟伅', - description:res.message - }); - } - }) + this.isIncludesNotLeaf = false + this.includesNotLeaf(this.departTree) + console.log('isIncludesNotLeaf', this.isIncludesNotLeaf) + + // 涓簍rue鍒欒〃绀洪�変腑椤瑰寘鍚潪鍙跺瓙缁撶偣 false鍒欒〃绀洪�変腑椤瑰潎涓哄彾瀛愮粨鐐� + if (!this.isIncludesNotLeaf) { + if (this.checkedKeys.length <= 0) { + // this.$message.warning('璇烽�夋嫨涓�鏉¤褰曪紒') + this.$notification.warning({ + message: '娑堟伅', + description: '璇烽�夋嫨涓�鏉¤褰�' + }) + } else { + var ids = '' + for (var a = 0; a < this.checkedKeys.length; a++) { + ids += this.checkedKeys[a] + ',' } + var that = this + this.$confirm({ + title: '纭鍒犻櫎', + content: '纭畾瑕佸垹闄ゆ墍閫変腑鐨� ' + this.checkedKeys.length + ' 鏉℃暟鎹�?', + onOk: function() { + deleteAction(that.url.deleteBatch, { ids: ids }).then((res) => { + if (res.success) { + // that.$message.success(res.message) + that.$notification.success({ + message: '娑堟伅', + description: res.message + }) + that.loadTree() + that.onClearSelected() + } else { + // that.$message.warning(res.message) + that.$notification.warning({ + message: '娑堟伅', + description: res.message + }) + } + }) + } + }) + } + } else { + this.$notification.warning({ + message: '娑堟伅', + description: '閫変腑椤瑰寘鍚凡鎸傝浇瀛愯妭鐐硅溅闂�' }) + } + }, + includesNotLeaf(treeData) { + for (let i = 0; i < treeData.length; i++) { + if (!treeData[i].leaf) { + this.includesNotLeaf(treeData[i].children) + } + if (this.checkedKeys.includes(treeData[i].id) && !treeData[i].leaf) { + this.isIncludesNotLeaf = true + } } }, onSearch(value) { let that = this if (value) { - searchByKeywords({keyWord: value}).then((res) => { + searchByKeywords({ keyWord: value }).then((res) => { if (res.success) { that.departTree = [] for (let i = 0; i < res.result.length; i++) { @@ -342,9 +345,9 @@ } else { // that.$message.warning(res.message) that.$notification.warning({ - message:'娑堟伅', - description:res.message - }); + message: '娑堟伅', + description: res.message + }) } }) } else { @@ -365,9 +368,9 @@ console.log('onCheck', checkedKeys, info) this.hiding = false //---- author:os_chengtgen -- date:20190827 -- for:鍒囨崲鐖跺瓙鍕鹃�夋ā寮� =======------ - if(this.checkStrictly){ - this.checkedKeys = checkedKeys.checked; - }else{ + if (this.checkStrictly) { + this.checkedKeys = checkedKeys.checked + } else { this.checkedKeys = checkedKeys } //---- author:os_chengtgen -- date:20190827 -- for:鍒囨崲鐖跺瓙鍕鹃�夋ā寮� =======------ @@ -375,6 +378,7 @@ onSelect(selectedKeys, e) { console.log('selected', selectedKeys, e) this.hiding = false + this.deleteTrigger = 'leftClick' let record = e.node.dataRef console.log('onSelect-record', record) this.currSelected = Object.assign({}, record) @@ -382,15 +386,14 @@ this.selectedKeys = [record.key] this.model.parentId = record.parentId this.setValuesToForm(record) - this.$refs.departAuth.show(record.id); - + this.$refs.departAuth.show(record.id) }, // 瑙﹀彂onSelect浜嬩欢鏃�,涓洪儴闂ㄦ爲鍙充晶鐨刦orm琛ㄥ崟璧嬪�� setValuesToForm(record) { - if(record.orgCategory == '1'){ - this.orgCategoryDisabled = true; - }else{ - this.orgCategoryDisabled = false; + if (record.orgCategory == '1') { + this.orgCategoryDisabled = true + } else { + this.orgCategoryDisabled = false } }, getCurrSelectedTitle() { @@ -418,34 +421,34 @@ if (!this.currSelected.id) { // this.$message.warning('璇风偣鍑婚�夋嫨瑕佷慨鏀硅溅闂�!') this.$notification.warning({ - message:'娑堟伅', - description:"璇风偣鍑婚�夋嫨瑕佷慨鏀硅溅闂达紒" - }); + message: '娑堟伅', + description: '璇风偣鍑婚�夋嫨瑕佷慨鏀硅溅闂达紒' + }) return } httpAction(this.url.edit, this.currSelected, 'put').then((res) => { if (res.success) { // this.$message.success('淇濆瓨鎴愬姛!') - this.$notification.warning({ - message:'娑堟伅', - description:"淇濆瓨鎴愬姛" - }); + this.$notification.success({ + message: '娑堟伅', + description: '淇濆瓨鎴愬姛' + }) this.loadTree() } else { // this.$message.error(res.message) this.$notification.warning({ - message:'娑堟伅', - description:res.message - }); + message: '娑堟伅', + description: res.message + }) } }) } }) }, emptyCurrForm() { - this.$refs.form.resetFields(); - this.model={} + this.$refs.form.resetFields() + this.model = {} }, nodeSettingFormSubmit() { this.$refs.form.validate(valid => { @@ -467,9 +470,9 @@ if (!key) { // this.$message.warning('璇峰厛鐐瑰嚮閫変腑涓婄骇杞﹂棿锛�') this.$notification.warning({ - message:'娑堟伅', - description:"璇峰厛鐐瑰嚮閫変腑涓婄骇杞﹂棿锛�" - }); + message: '娑堟伅', + description: '璇峰厛鐐瑰嚮閫変腑涓婄骇杞﹂棿锛�' + }) return false } this.$refs.departModal.add(this.selectedKeys) @@ -481,39 +484,47 @@ }, handleDelete() { var that = this - this.$confirm({ - title: '纭鍒犻櫎', - content: '纭畾瑕佸垹闄ゆ杞﹂棿浠ュ強瀛愯妭鐐规暟鎹悧?', - onOk: function () { - deleteByProduction({id: that.rightClickSelectedKey}).then((resp) => { - if (resp.success) { - //鍒犻櫎鎴愬姛鍚庯紝鍘婚櫎宸查�変腑涓殑鏁版嵁 - that.checkedKeys.splice(that.checkedKeys.findIndex(key => key === that.rightClickSelectedKey), 1); - // that.$message.success('鍒犻櫎鎴愬姛!') - that.$notification.success({ - message:'娑堟伅', - description:"鍒犻櫎鎴愬姛" - }); - that.loadTree() - //鍒犻櫎鍚庡悓姝ユ竻绌哄彸渚у熀鏈俊鎭唴瀹� - // let orgCode=that.model.orgCode; - // if(orgCode && orgCode === that.rightClickSelectedOrgCode){ + if (this.currSelected.leaf) { + this.$confirm({ + title: '纭鍒犻櫎', + content: `纭畾瑕佸垹闄� ${that.currSelected.productionName} 鍚�?`, + onOk: function() { + deleteByProduction({ id: that.currSelected.id }).then((resp) => { + if (resp.success) { + //鍒犻櫎鎴愬姛鍚庯紝鍘婚櫎宸查�変腑涓殑鏁版嵁 + // that.checkedKeys.splice(that.checkedKeys.findIndex(key => key === that.rightClickSelectedKey), 1) + // that.$message.success('鍒犻櫎鎴愬姛!') + that.$notification.success({ + message: '娑堟伅', + description: '鍒犻櫎鎴愬姛' + }) + that.loadTree() + //鍒犻櫎鍚庡悓姝ユ竻绌哄彸渚у熀鏈俊鎭唴瀹� + // let orgCode=that.model.orgCode; + // if(orgCode && orgCode === that.rightClickSelectedOrgCode){ that.onClearSelected() - // } - } else { - // that.$message.warning('鍒犻櫎澶辫触!') - that.$notification.warning({ - message:'娑堟伅', - description:"鍒犻櫎澶辫触" - }); - } - }) - } - }) + // } + } else { + // that.$message.warning('鍒犻櫎澶辫触!') + that.$notification.warning({ + message: '娑堟伅', + description: '鍒犻櫎澶辫触' + }) + } + }) + } + }) + } else { + this.$notification.warning({ + message: '娑堟伅', + description: '姝よ溅闂村凡鎸傝浇瀛愯妭鐐�' + }) + } + console.log('deletedRecord', deletedRecord) }, selectDirectiveOk(record) { console.log('閫変腑鎸囦护鏁版嵁', record) - this.nodeSettingForm.setFieldsValue({directiveCode: record.directiveCode}) + this.nodeSettingForm.setFieldsValue({ directiveCode: record.directiveCode }) this.currSelected.sysCode = record.sysCode }, getFlowGraphData(node) { @@ -533,24 +544,24 @@ } }, //---- author:os_chengtgen -- date:20190827 -- for:鍒囨崲鐖跺瓙鍕鹃�夋ā寮� =======------ - expandAll () { + expandAll() { this.iExpandedKeys = this.allTreeKeys }, - closeAll () { + closeAll() { this.iExpandedKeys = [] }, - checkALL () { + checkALL() { this.checkStriccheckStrictlytly = false this.checkedKeys = this.allTreeKeys }, - cancelCheckALL () { + cancelCheckALL() { //this.checkedKeys = this.defaultCheckedKeys this.checkedKeys = [] }, - switchCheckStrictly (v) { - if(v==1){ + switchCheckStrictly(v) { + if (v == 1) { this.checkStrictly = false - }else if(v==2){ + } else if (v == 2) { this.checkStrictly = true } }, @@ -570,7 +581,7 @@ this.currFlowId = this.$route.params.id this.currFlowName = this.$route.params.name // this.loadTree() - }, + } } </script> diff --git a/src/views/system/UserList.vue b/src/views/system/UserList.vue index 6e4d7d2..ef70a2b 100644 --- a/src/views/system/UserList.vue +++ b/src/views/system/UserList.vue @@ -269,7 +269,8 @@ title: '杞﹂棿', align: "center", width: 240, - dataIndex: 'productionName' + dataIndex: 'productionName', + ellipsis: true, }, { title: '鐘舵��', @@ -363,7 +364,8 @@ title: '杞﹂棿', align: "center", width: 240, - dataIndex: 'productionName' + dataIndex: 'productionName', + ellipsis: true, }, { title: '鐘舵��', @@ -433,7 +435,8 @@ title: '杞﹂棿', align: "center", width: 240, - dataIndex: 'productionName' + dataIndex: 'productionName', + ellipsis: true, }, { title: '鐝粍', diff --git a/src/views/system/WorkshopSignageManagement.vue b/src/views/system/WorkshopSignageManagement.vue index 373697e..6c68353 100644 --- a/src/views/system/WorkshopSignageManagement.vue +++ b/src/views/system/WorkshopSignageManagement.vue @@ -7,15 +7,17 @@ <!-- 鎼滅储鍖哄煙 --> <a-form layout="inline" @keyup.enter.native="searchQuery"> <a-row :gutter="24"> - <a-col :md="12" :sm="8"> - <a-form-item label="杞﹂棿鍚嶇О" :labelCol="{ span: 5 }" :wrapperCol="{ span: 18, offset: 1 }"> + <a-col :md="6" :sm="6"> + <a-form-item label="杞﹂棿鍚嶇О" :labelCol="{ span: 5 }" :wrapperCol="{ span: 19}"> <a-input placeholder="" v-model="queryParam.workshopName"></a-input> </a-form-item> </a-col> <span style="float: left; overflow: hidden" class="table-page-search-submitButtons"> - <a-col :md="12" :sm="24"> - <a-button type="primary" @click="searchQuery" icon="search" style="margin-left: 21px">鏌ヨ</a-button> - <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">閲嶇疆</a-button> + <a-col> + <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> </span> </a-row> @@ -74,8 +76,8 @@ </a-col> <a-col :md="rightColMd" :sm="24" v-if="this.rightcolval == 1"> <a-card :bordered="false"> - <div style="text-align: right"> - <a-icon type="close-circle" @click="hideUserList" /> + <div @click="hideUserList" class="close-circle"> + <a-icon type="close-circle"/> </div> <!-- 鏌ヨ鍖哄煙 --> <div class="table-page-search-wrapper"> @@ -97,7 +99,7 @@ </div> <!-- 鎿嶄綔鎸夐挳鍖哄煙 --> <div class="table-operator" :md="24" :sm="24"> - <a-button @click="handleAddDeviceInWorkshop" type="primary" icon="plus" style="margin-top: 16px" + <a-button @click="handleAddDeviceInWorkshop" type="primary" icon="plus" style="margin: 5px 0 10px 2px" >宸叉湁璁惧 </a-button> @@ -114,6 +116,7 @@ </a-button> </a-dropdown> </div> + <!-- table鍖哄煙-begin --> <div> <div class="ant-alert ant-alert-info" style="margin-bottom: 16px"> @@ -147,7 +150,7 @@ <!-- 琛ㄥ崟鍖哄煙 --> <workshop-modal ref="modalForm" @ok="modalFormOk"></workshop-modal> <!--鏂板杞﹂棿--> - <select-device-modal ref="selectUserModal" @selectFinished="selectOK"></select-device-modal> + <select-device-modal ref="selectDeviceModal" @selectFinished="selectOK" :title="'娣诲姞宸叉湁璁惧'"></select-device-modal> <!--宸叉湁璁惧--> </a-row> </template> @@ -354,6 +357,8 @@ if (res.success) { this.dataSource2 = res.result.records this.ipagination2.total = res.result.total + }else{ + this.dataSource2=[] } this.loading2 = false }) @@ -416,7 +421,7 @@ if (res.success) { that.$message.success(res.message) that.loadData2() - that.onClearSelected() + that.onClearSelected2() } else { that.$message.warning(res.message) } @@ -455,9 +460,11 @@ if (this.currentWorkshopId == '') { this.$message.error('璇烽�夋嫨涓�涓溅闂�!') } else { - this.$refs.selectUserModal.visible = true - this.$refs.selectUserModal.selectedRowKeys = [] - this.$refs.selectUserModal.selectedRows = [] + this.$refs.selectDeviceModal.visible = true + this.$refs.selectDeviceModal.selectedRowKeys = [] + this.$refs.selectDeviceModal.selectedRows = [] + this.$refs.selectDeviceModal.checkedKeys = [] + this.$refs.selectDeviceModal.expandAll() } }, @@ -503,4 +510,11 @@ .ant-btn { margin-left: 8px; } + .close-circle{ + position: absolute; + z-index: 1; + right: 15px; + top: 15px; + cursor: pointer; + } </style> \ No newline at end of file diff --git a/src/views/system/modules/PasswordModal.vue b/src/views/system/modules/PasswordModal.vue index f9f897e..810cc5f 100644 --- a/src/views/system/modules/PasswordModal.vue +++ b/src/views/system/modules/PasswordModal.vue @@ -31,6 +31,7 @@ <script> import {changePassword} from '@/api/api' + import { ajaxGetDictItems, getDictItemsFromCache } from '@/api/api' export default { name: "PasswordModal", @@ -69,6 +70,13 @@ sm: { span: 16 }, }, form:this.$form.createForm(this) + } + }, + watch:{ + visible:{ + handler(value){ + if(value) this.initDictData('password_length') + } } }, created () { @@ -136,7 +144,20 @@ handleConfirmBlur (e) { const value = e.target.value this.confirmDirty = this.confirmDirty || !!value - } + }, + initDictData(dictCode) { + //鏍规嵁瀛楀吀Code, 鍒濆鍖栧瓧鍏告暟缁� + ajaxGetDictItems(dictCode, null).then((res) => { + if (res.success) { + const regExp = new RegExp("^(?=.*[a-zA-Z])(?=.*\\\d)(?=.*[~!@#$%^&*()_+`\\-={}:\";'<>?,./]).{"+Number(res.result[0].value)+",}$"); + this.validatorRules.password.rules[0]={ + required:true, + pattern: regExp, + message: `瀵嗙爜鐢�${res.result[0].value}浣嶆暟瀛椼�佸ぇ灏忓啓瀛楁瘝鍜岀壒娈婄鍙风粍鎴�!`, + } + } + }) + }, } } </script> \ No newline at end of file diff --git a/src/views/system/modules/ProductionManager/ProductionModal.vue b/src/views/system/modules/ProductionManager/ProductionModal.vue index e131e7e..e5d1dc7 100644 --- a/src/views/system/modules/ProductionManager/ProductionModal.vue +++ b/src/views/system/modules/ProductionManager/ProductionModal.vue @@ -137,7 +137,7 @@ httpAction(this.url.add,this.model,"post").then((res)=>{ if(res.success){ // that.$message.success(res.message); - that.$notification.warning({ + that.$notification.success({ message:'娑堟伅', description:res.message }); diff --git a/src/views/system/modules/SelectDeviceModal.vue b/src/views/system/modules/SelectDeviceModal.vue index 6d8ace1..f91e1d4 100644 --- a/src/views/system/modules/SelectDeviceModal.vue +++ b/src/views/system/modules/SelectDeviceModal.vue @@ -1,228 +1,369 @@ <template> <div> - <a-modal - centered + <a-drawer :title="title" - :width="1000" :visible="visible" + width="650" @ok="handleOk" - @cancel="handleCancel" - cancelText="鍏抽棴"> + @close="handleCancel" + > - <!-- 鏌ヨ鍖哄煙 --> - <div class="table-page-search-wrapper"> - <a-form layout="inline" @keyup.enter.native="searchQuery"> - <a-row :gutter="24"> + <!--<!– 鏌ヨ鍖哄煙 –>--> + <!--<div class="table-page-search-wrapper">--> + <!--<a-form layout="inline" @keyup.enter.native="searchQuery">--> + <!--<a-row :gutter="24">--> - <a-col :span="10"> - <a-form-item label="璁惧鍚嶇О"> - <a-input placeholder="璇疯緭鍏ヨ澶囧悕绉�" v-model="queryParam.equipmentName"></a-input> - </a-form-item> - </a-col> - <a-col :span="8"> - <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons"> - <a-button type="primary" @click="searchQuery" icon="search">鏌ヨ</a-button> - <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">閲嶇疆</a-button> - </span> - </a-col> + <!--<a-col :span="10">--> + <!--<a-form-item label="璁惧鍚嶇О">--> + <!--<a-input placeholder="璇疯緭鍏ヨ澶囧悕绉�" v-model="queryParam.equipmentName"></a-input>--> + <!--</a-form-item>--> + <!--</a-col>--> + <!--<a-col :span="8">--> + <!--<span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">--> + <!--<a-button type="primary" @click="searchQuery" icon="search">鏌ヨ</a-button>--> + <!--<a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">閲嶇疆</a-button>--> + <!--</span>--> + <!--</a-col>--> - </a-row> + <!--</a-row>--> + <!--</a-form>--> + <!--</div>--> + <!--<!– table鍖哄煙-begin –>--> + <!--<div>--> + <!--<a-table--> + <!--size="small"--> + <!--bordered--> + <!--rowKey="equipmentId"--> + <!--:columns="columns1"--> + <!--:dataSource="dataSource1"--> + <!--:pagination="ipagination"--> + <!--:loading="loading"--> + <!--:scroll="{ y: 240 }"--> + <!--:rowSelection="{selectedRowKeys: selectedRowKeys,onSelectAll:onSelectAll,onSelect:onSelect,onChange: onSelectChange}"--> + <!--@change="handleTableChange">--> + <!--</a-table>--> + <!--</div>--> + <!--<!– table鍖哄煙-end –>--> + + <a-spin :spinning="loading"> + <!-- showLine --> + <a-form> + <a-form-item label="杞﹂棿灞傜骇锛�"> + <a-tree showLine ref="tree" :expandedKeys.sync="expandedKeys" + :treeData="treeDataSource" checkable @check="onCheck" v-model="checkedKeys" + @expand="onExpand"> + </a-tree> + </a-form-item> </a-form> + + </a-spin> + + + <div class="drawer-bottom-button"> + <a-dropdown + style="float: left" + :trigger="['click']" + placement="topCenter" + > + <a-menu slot="overlay"> + <a-menu-item key="1" @click="expandAll">灞曞紑鎵�鏈�</a-menu-item> + <a-menu-item key="2" @click="closeAll">鍚堝苟鎵�鏈�</a-menu-item> + <a-menu-item key="3" @click="refreshTree">鍒锋柊</a-menu-item> + </a-menu> + <a-button> + 鏍戞搷浣� + <a-icon type="up"/> + </a-button> + </a-dropdown> + <a-popconfirm title="纭畾鏀惧純缂栬緫锛�" @confirm="handleCancel" okText="纭畾" cancelText="鍙栨秷"> + <a-button style="margin-right: .8rem">鍏抽棴</a-button> + </a-popconfirm> + <a-button + @click="handleOk" + type="primary" + >纭畾 + </a-button> </div> - <!-- table鍖哄煙-begin --> - <div> - <a-table - size="small" - bordered - rowKey="equipmentId" - :columns="columns1" - :dataSource="dataSource1" - :pagination="ipagination" - :loading="loading" - :scroll="{ y: 240 }" - :rowSelection="{selectedRowKeys: selectedRowKeys,onSelectAll:onSelectAll,onSelect:onSelect,onChange: onSelectChange}" - @change="handleTableChange"> - </a-table> - </div> - <!-- table鍖哄煙-end --> - </a-modal> + + </a-drawer> </div> </template> <script> - import { filterObj } from '@/utils/util' - import { getAction } from '@/api/manage' + // import { filterObj } from '@/utils/util' + // import { getAction } from '@/api/manage' + import { + getAction, + postAction, + deleteAction + } from '@/api/manage' + import BaseTree from '@/views/mdc/common/BaseTree' + import DepartTree from '@/views/mdc/base/modules/DepartList/DepartListTree/DepartTree' + import { mapActions } from 'vuex' export default { name: 'SelectDeviceModal', + components: { + BaseTree, DepartTree + }, + props: { + editDisable: { + type: Boolean, + default() { + return true + } + }, + title: { + type: String + } + }, data() { return { - title: '娣诲姞宸叉湁璁惧', - names: [], - visible: false, - placement: 'right', - description: '', - // 鏌ヨ鏉′欢 - queryParam: {}, - // 琛ㄥご - columns1: [ - { - title: '#', - dataIndex: '', - key: 'rowIndex', - width: 50, - align: 'center', - customRender: function(t, r, index) { - return parseInt(index) + 1 - } - }, - { - title: '璁惧缂栧彿', - align: 'center', - width: 100, - dataIndex: 'equipmentId' - }, - { - title: '璁惧鍚嶇О', - align: 'center', - width: 100, - dataIndex: 'equipmentName' - }, - { - title: '璁惧绫诲瀷', - align: 'center', - width: 100, - dataIndex: 'equipmentType' - }, - { - title: '椹卞姩绫诲瀷', - align: 'center', - width: 100, - dataIndex: 'driveType' - } - ], - //鏁版嵁闆� - dataSource1: [], - dataSource2: [], - // 鍒嗛〉鍙傛暟 - ipagination: { - current: 1, - pageSize: 10, - pageSizeOptions: ['10', '20', '30'], - showTotal: (total, range) => { - return range[0] + '-' + range[1] + ' 鍏�' + total + '鏉�' - }, - showQuickJumper: true, - showSizeChanger: true, - total: 0 - }, + cardLoading: false, loading: false, - selectedRowKeys: [], - selectedRows: [], + treeDataSource: [], + expandedKeys: [], + checkedKeys: [], url: { - list: '/mdc/mdcEquipment/list' - } + getBaseTree: '/mdc/mdcEquipment/queryTreeListByProduction' + }, + dataList: [], + allTreeKeys: [], + visible: false, + dataSource: [] + + // names: [], + // placement: 'right', + // description: '', + // // 鏌ヨ鏉′欢 + // queryParam: {}, + // // 琛ㄥご + // columns1: [ + // { + // title: '#', + // dataIndex: '', + // key: 'rowIndex', + // width: 50, + // align: 'center', + // customRender: function(t, r, index) { + // return parseInt(index) + 1 + // } + // }, + // { + // title: '璁惧缂栧彿', + // align: 'center', + // width: 100, + // dataIndex: 'equipmentId' + // }, + // { + // title: '璁惧鍚嶇О', + // align: 'center', + // width: 100, + // dataIndex: 'equipmentName' + // }, + // { + // title: '璁惧绫诲瀷', + // align: 'center', + // width: 100, + // dataIndex: 'equipmentType' + // }, + // { + // title: '椹卞姩绫诲瀷', + // align: 'center', + // width: 100, + // dataIndex: 'driveType' + // } + // ], + // //鏁版嵁闆� + // dataSource1: [], + // dataSource2: [], + // // 鍒嗛〉鍙傛暟 + // ipagination: { + // current: 1, + // pageSize: 10, + // pageSizeOptions: ['10', '20', '30'], + // showTotal: (total, range) => { + // return range[0] + '-' + range[1] + ' 鍏�' + total + '鏉�' + // }, + // showQuickJumper: true, + // showSizeChanger: true, + // total: 0 + // }, + // loading: false, + // selectedRowKeys: [], + // selectedRows: [], + // url: { + // list: '/mdc/mdcEquipment/list' + // }, + // activeKey: '1', + // isDepartType: '' } }, created() { - this.loadData() + // this.loadData() + this.queryTreeData() + this.closeAll() }, methods: { - searchQuery() { - this.loadData(1) + ...mapActions(['QueryProduction']), + + onExpand(expandedKeys) { + this.expandedKeys = expandedKeys + this.autoExpandParent = false }, - searchReset() { - this.queryParam = {} - this.loadData(1) + + queryTreeData() { + this.loading = true + this.cardLoading = true + this.QueryProduction().then(res => { + if (res.success) { + this.dataList = [] + this.allTreeKeys = [] + this.getTreeDataSouce(res.result) + this.treeDataSource = res.result + this.generateList(this.treeDataSource) + console.log('treeDataSource', this.treeDataSource) + this.expandedKeys = this.allTreeKeys + } else { + this.$message.warn(res.message) + } + }).finally(() => { + this.loading = false + this.cardLoading = false + }) + }, + + generateList(data) { + for (let i = 0; i < data.length; i++) { + const node = data[i] + const key = node.key + const title = node.title + this.dataList.push({ + key, + title: title + }) + this.allTreeKeys.push(key) + if (node.children) { + this.generateList(node.children) + } + } + }, + + getTreeDataSouce(data) { + data.forEach(item => { + if (item.children && item.children.length > 0) { + this.getTreeDataSouce(item.children) + } + item.key = item.equipmentId ? item.equipmentId : item.key + item.value = item.equipmentId ? item.equipmentId : item.value + }) + }, + expandAll() { + this.expandedKeys = this.allTreeKeys + }, + closeAll() { + this.expandedKeys = ['-1'] + }, + refreshTree() { + this.queryTreeData() + }, + onCheck(value, obj) { + this.checkedKeys = value + console.log('obj,', obj) + this.deviceNodes = obj.checkedNodes.filter(item => item.data.props.equipmentId).map(item => item.data.props.equipmentId) + console.log(this.deviceNodes) }, handleCancel() { this.visible = false }, handleOk() { - this.dataSource2 = this.selectedRowKeys - console.log('data---------' + this.dataSource2) - if (this.dataSource2.length > 0) { - this.$emit('selectFinished', this.dataSource2) - } + this.$emit('selectFinished', this.deviceNodes) this.visible = false - }, - add() { - this.visible = true - }, - loadData(arg) { - //鍔犺浇鏁版嵁 鑻ヤ紶鍏ュ弬鏁�1鍒欏姞杞界涓�椤电殑鍐呭 - if (arg === 1) { - this.ipagination.current = 1 - } - var params = this.getQueryParams()//鏌ヨ鏉′欢 - getAction(this.url.list, params).then((res) => { - if (res.success) { - this.dataSource1 = res.result.records - this.ipagination.total = res.result.total - } - }) - }, - getQueryParams() { - var param = Object.assign({}, this.queryParam, this.isorter) - param.field = this.getQueryField() - param.pageNo = this.ipagination.current - param.pageSize = this.ipagination.pageSize - return filterObj(param) - }, - getQueryField() { - //TODO 瀛楁鏉冮檺鎺у埗 - }, - onSelectAll(selected, selectedRows, changeRows) { - if (selected === true) { - for (var a = 0; a < changeRows.length; a++) { - this.dataSource2.push(changeRows[a]) - } - } else { - for (var b = 0; b < changeRows.length; b++) { - this.dataSource2.splice(this.dataSource2.indexOf(changeRows[b]), 1) - } - } - // console.log(selected, selectedRows, changeRows); - }, - onSelect(record, selected) { - console.log(this.selectedRowKeys) - if (selected === true) { - this.dataSource2.push(record) - } else { - var index = this.dataSource2.indexOf(record) - //console.log(); - if (index >= 0) { - this.dataSource2.splice(this.dataSource2.indexOf(record), 1) - } - } - }, - onSelectChange(selectedRowKeys, selectedRows) { - console.log('selectedRowKeys', selectedRowKeys) - this.selectedRowKeys = selectedRowKeys - this.selectionRows = selectedRows - }, - onClearSelected() { - this.selectedRowKeys = [] - this.selectionRows = [] - }, - handleDelete: function(record) { - this.dataSource2.splice(this.dataSource2.indexOf(record), 1) - }, - handleTableChange(pagination, filters, sorter) { - //鍒嗛〉銆佹帓搴忋�佺瓫閫夊彉鍖栨椂瑙﹀彂 - console.log(sorter) - //TODO 绛涢�� - if (Object.keys(sorter).length > 0) { - this.isorter.column = sorter.field - this.isorter.order = 'ascend' == sorter.order ? 'asc' : 'desc' - } - this.ipagination = pagination - this.loadData() } + + // add() { + // this.visible = true + // }, + // loadData(arg) { + // //鍔犺浇鏁版嵁 鑻ヤ紶鍏ュ弬鏁�1鍒欏姞杞界涓�椤电殑鍐呭 + // if (arg === 1) { + // this.ipagination.current = 1 + // } + // var params = this.getQueryParams()//鏌ヨ鏉′欢 + // getAction(this.url.list, params).then((res) => { + // if (res.success) { + // this.dataSource1 = res.result.records + // this.ipagination.total = res.result.total + // } + // }) + // }, + // getQueryParams() { + // var param = Object.assign({}, this.queryParam, this.isorter) + // param.field = this.getQueryField() + // param.pageNo = this.ipagination.current + // param.pageSize = this.ipagination.pageSize + // return filterObj(param) + // }, + // getQueryField() { + // //TODO 瀛楁鏉冮檺鎺у埗 + // }, + // onSelectAll(selected, selectedRows, changeRows) { + // if (selected === true) { + // for (var a = 0; a < changeRows.length; a++) { + // this.dataSource2.push(changeRows[a]) + // } + // } else { + // for (var b = 0; b < changeRows.length; b++) { + // this.dataSource2.splice(this.dataSource2.indexOf(changeRows[b]), 1) + // } + // } + // // console.log(selected, selectedRows, changeRows); + // }, + // onSelect(record, selected) { + // console.log(this.selectedRowKeys) + // if (selected === true) { + // this.dataSource2.push(record) + // } else { + // var index = this.dataSource2.indexOf(record) + // //console.log(); + // if (index >= 0) { + // this.dataSource2.splice(this.dataSource2.indexOf(record), 1) + // } + // } + // }, + // onSelectChange(selectedRowKeys, selectedRows) { + // console.log('selectedRowKeys', selectedRowKeys) + // this.selectedRowKeys = selectedRowKeys + // this.selectionRows = selectedRows + // }, + // onClearSelected() { + // this.selectedRowKeys = [] + // this.selectionRows = [] + // }, + // handleDelete: function(record) { + // this.dataSource2.splice(this.dataSource2.indexOf(record), 1) + // }, + // handleTableChange(pagination, filters, sorter) { + // //鍒嗛〉銆佹帓搴忋�佺瓫閫夊彉鍖栨椂瑙﹀彂 + // console.log(sorter) + // //TODO 绛涢�� + // if (Object.keys(sorter).length > 0) { + // this.isorter.column = sorter.field + // this.isorter.order = 'ascend' == sorter.order ? 'asc' : 'desc' + // } + // this.ipagination = pagination + // this.loadData() + // }, + + } } </script> <style lang="less" scoped> + /deep/ .ant-modal { + /*transform-origin: 337px 50px;*/ + } + .ant-card-body .table-operator { margin-bottom: 18px; } @@ -253,4 +394,16 @@ height: 90% !important; overflow-y: hidden } + + .drawer-bottom-button { + position: absolute; + bottom: 0; + width: 100%; + border-top: 1px solid #e8e8e8; + padding: 10px 16px; + text-align: right; + left: 0; + background: #fff; + border-radius: 0 0 2px 2px; + } </style> \ No newline at end of file diff --git a/src/views/system/modules/UserModal.vue b/src/views/system/modules/UserModal.vue index e48f75b..a3f875e 100644 --- a/src/views/system/modules/UserModal.vue +++ b/src/views/system/modules/UserModal.vue @@ -67,7 +67,7 @@ <j-select-production v-model="model.selectedProduction" :multi="true" @back="backProductionInfo" :backProduction="true" :treeProductOpera="true"></j-select-production> </a-form-model-item> <a-form-model-item label="鐝粍鍒嗛厤" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="teamId"> - <j-dict-select-tag + <j-dict-select-tag v-model="model.teamId" :triggerChange="true" dictCode="mom_base_team,name,id,del_flag = 0" @@ -150,6 +150,7 @@ import { duplicateCheck } from '@/api/api' import JSelectProduction from '../../../components/jeecgbiz/JSelectProduction' import {mapActions} from 'vuex' + import { ajaxGetDictItems, getDictItemsFromCache } from '@/api/api' export default { name: "UserModal", @@ -215,6 +216,13 @@ nextProductionOptions:[], isDepartType:'', + } + }, + watch:{ + visible:{ + handler(value){ + if(value) this.initDictData('password_length') + } } }, created () { @@ -548,7 +556,22 @@ }else{ this.departIdShow=true; } - } + }, + initDictData(dictCode) { + //鏍规嵁瀛楀吀Code, 鍒濆鍖栧瓧鍏告暟缁� + ajaxGetDictItems(dictCode, null).then((res) => { + if (res.success) { + const regExp = new RegExp("^(?=.*[a-zA-Z])(?=.*\\\d)(?=.*[~!@#$%^&*()_+`\\-={}:\";'<>?,./]).{"+Number(res.result[0].value)+",}$"); + + this.validatorRules.password[0]={ + required:true, + pattern: regExp, + message: `瀵嗙爜鐢�${res.result[0].value}浣嶆暟瀛椼�佸ぇ灏忓啓瀛楁瘝鍜岀壒娈婄鍙风粍鎴�!`, + } + + } + }) + }, } } </script> diff --git a/src/views/user/Login.vue b/src/views/user/Login.vue index b2a732b..22d89e3 100644 --- a/src/views/user/Login.vue +++ b/src/views/user/Login.vue @@ -49,6 +49,10 @@ </a-button> </a-form-item> + <a-form-model-item style="color: red"> + 瀵嗙骇锛氬唴閮� 璀﹀憡锛氭湰绯荤粺绂佹瀛樺偍銆佸鐞嗐�佷紶杈撴秹瀵嗕俊鎭� + </a-form-model-item> + </a-form-model> <!--<two-step-captcha v-if="requiredTwoStepCaptcha" :visible="stepCaptchaVisible" @success="stepCaptchaSuccess" @cancel="stepCaptchaCancel"></two-step-captcha>--> @@ -57,6 +61,7 @@ @success="loginSelectOk" ></login-select-tenant> <!--<third-login ref="thirdLogin"></third-login>--> + <user-password ref="userPassword"/> </div> </template> @@ -73,9 +78,11 @@ import LoginPhone from './LoginPhone' import store from '@/store' import { getAction } from '../../api/manage' +import UserPassword from '../../components/tools/UserPassword' export default { components: { + UserPassword, LoginSelectTenant, TwoStepCaptcha, // ThirdLogin, @@ -138,7 +145,10 @@ }, // 鐧诲綍鍚庡彴鎴愬姛 requestSuccess(loginResult) { - this.$router.push({ path: "/isps/userAnnouncement" }).catch(() => { + // this.$router.push({ path: "/isps/userAnnouncement" }).catch(() => { + // console.log('鐧诲綍璺宠浆棣栭〉鍑洪敊,杩欎釜閿欒浠庡摢閲屾潵鐨�') + // }) + this.$router.push({ path: "/dashboard/analysis" }).catch(() => { console.log('鐧诲綍璺宠浆棣栭〉鍑洪敊,杩欎釜閿欒浠庡摢閲屾潵鐨�') }) this.$notification.success({ @@ -162,13 +172,25 @@ // this.$refs.loginSelect.show(loginResult) }, //鐧诲綍鍚庡彴澶辫触 - requestFailed(err) { + requestFailed(err,username) { let description = ((err.response || {}).data || {}).message || err.message || "璇锋眰鍑虹幇閿欒锛岃绋嶅悗鍐嶈瘯" - this.$notification['error']({ - message: '鐧诲綍澶辫触', - description: description, - duration: 4, - }); + if(err.code!==5001&&err.code!==5002){ + this.$notification['error']({ + message: '鐧诲綍澶辫触', + description: description, + duration: 4, + }); + }else{ + this.$notification['warning']({ + message: '鎻愮ず', + description: description, + duration:1, + onClose:()=>{ + console.log('err',err) + this.$refs.userPassword.show(username) + } + }); + } //璐︽埛瀵嗙爜鐧诲綍閿欒鍚庢洿鏂伴獙璇佺爜 // if (this.customActiveKey === 'tab1' && description.indexOf('瀵嗙爜閿欒') > 0) { // this.$refs.alogin.handleChangeCheckCode() diff --git a/src/views/user/LoginAccount.vue b/src/views/user/LoginAccount.vue index 28449db..2ebd8e0 100644 --- a/src/views/user/LoginAccount.vue +++ b/src/views/user/LoginAccount.vue @@ -136,7 +136,7 @@ this.Login(loginParams).then((res) => { this.$emit('success', res.result) }).catch((err) => { - this.$emit('fail', err) + this.$emit('fail', err,loginParams.username) }); }else{ this.$emit('validateFail') -- Gitblit v1.9.3