Merge branch 'master' of http://117.34.109.166:18448/r/vue_mdc_430 into develop
| | |
| | | "dependencies": { |
| | | "@antv/data-set": "^0.11.4", |
| | | "@jeecg/antd-online-mini": "3.0.0-RC", |
| | | "@jiaminghi/data-view": "^2.10.0", |
| | | "@tinymce/tinymce-vue": "2.1.0", |
| | | "@toast-ui/editor": "^2.1.2", |
| | | "ali-oss": "^6.17.1", |
| | |
| | | "last 2 versions", |
| | | "not ie <= 8" |
| | | ] |
| | | } |
| | | } |
| | |
| | | }) |
| | | |
| | | // å°èªå¨æ³¨åææç»ä»¶ä¸ºå
¨å±ç»ä»¶ |
| | | // import dataV from '@jiaminghi/data-view' |
| | | // Vue.use(dataV) |
| | | import dataV from '@jiaminghi/data-view' |
| | | Vue.use(dataV) |
| | | |
| | | import VueDragResize from "vue-drag-resize" |
| | | Vue.component('vue-drag-resize', VueDragResize) |
| | |
| | | <dv-full-screen-container class="full-screen-container"> |
| | | <header class="page-header"> |
| | | {{ workshopDetails.workshopName }} |
| | | <div class="header-right" v-has="'home:saveDevicePositionAndSize'"> |
| | | <div class="header-left" v-has="'home:saveDevicePositionAndSize'"> |
| | | <a-space> |
| | | <span v-if="!isSwitchChecked">å¼å¯åè½</span> |
| | | <span v-else>å
³éåè½</span> |
| | |
| | | :disabled="isSwitchChecked" |
| | | /> |
| | | </a-space> |
| | | <a-button type="primary" icon="save" size="large" @click="saveDevicePositionAndSizeByApi">ä¿åä½ç½® </a-button> |
| | | <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"> |
| | | <div>{{ item.label }}</div> |
| | | <div class="status-square" :style="{ backgroundColor: item.color }"></div> |
| | | <div>{{ getDeviceNumberByStatus(item.value) }}</div> |
| | | </div> |
| | | </div> |
| | | </header> |
| | | |
| | |
| | | v-on:resizing="resize($event, index)" |
| | | v-on:dragging="resize($event, index)" |
| | | :parentLimitation="true" |
| | | :minw="100" |
| | | :minh="100" |
| | | :minw="70" |
| | | :minh="70" |
| | | :isDraggable="isDraggable" |
| | | :isResizable="isResizable" |
| | | :stickSize="6" |
| | | > |
| | | <div class="single-device" :style="{ width: item.vw + 'px', height: item.vh + 'px' }" |
| | | @mouseenter="openDetail(item)"> |
| | | @click="openDetail(item)"> |
| | | <div class="device-status"> |
| | | <div |
| | | v-if="item.equipmentStatus == 2 || item.equipmentStatus == 1" |
| | |
| | | class="device-image" |
| | | ></div> |
| | | </div> |
| | | <div class="device-id" :style="{ fontSize: item.fontSize + 'px' }"> |
| | | <div class="device-id" id="deviceId" |
| | | :style="{ fontSize: item.fontSize + 'px',color:workshopDetails.equipmentIdColor }"> |
| | | {{ item.equipmentId }} |
| | | </div> |
| | | </div> |
| | | </VueDragResize> |
| | | <div class="device-status-info"> |
| | | <div 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> |
| | | </div> |
| | | |
| | | </div> |
| | | </dv-border-box-8> |
| | | |
| | |
| | | this.$refs.deviceContainerRef.style.backgroundImage = `url(${this.getImgView( |
| | | this.workshopDetails.backgroundImage |
| | | )})` |
| | | |
| | | |
| | | }) |
| | | }, |
| | | |
| | |
| | | }, |
| | | |
| | | openDetail(item) { |
| | | if (item.equipmentStatus == 0) { |
| | | // this.$message.warn("设å¤å¤äºå
³æºç¶æï¼"); |
| | | this.$message.warning('设å¤å¤äºå
³æºç¶æï¼') |
| | | return false |
| | | if (!this.isSwitchChecked) { |
| | | if (item.equipmentStatus == 0) { |
| | | // this.$message.warn("设å¤å¤äºå
³æºç¶æï¼"); |
| | | this.$message.warning('设å¤å¤äºå
³æºç¶æï¼') |
| | | return false |
| | | } |
| | | console.log(item) |
| | | console.log(this.$refs.EquipmentDetailModal) |
| | | this.$refs.EquipmentDetailModal.initData(item.equId) |
| | | this.$refs.EquipmentDetailModal.timerModel(item.equId) |
| | | // this.equipMessageTimer = setInterval(() => { |
| | | // setTimeout( this.$refs.equmentDetaiModel.initData(item.equipmentId),0) |
| | | // },1000*10) |
| | | } |
| | | console.log(item) |
| | | console.log(this.$refs.EquipmentDetailModal) |
| | | this.$refs.EquipmentDetailModal.initData(item.equId) |
| | | this.$refs.EquipmentDetailModal.timerModel(item.equId) |
| | | // this.equipMessageTimer = setInterval(() => { |
| | | // setTimeout( this.$refs.equmentDetaiModel.initData(item.equipmentId),0) |
| | | // },1000*10) |
| | | }, |
| | | } |
| | | |
| | | }, |
| | | created() { |
| | |
| | | text-align: center; |
| | | position: relative; |
| | | |
| | | .header-right { |
| | | .header-left { |
| | | width: 450px; |
| | | position: absolute; |
| | | right: 0px; |
| | | left: 0px; |
| | | top: 35px; |
| | | display: flex; |
| | | justify-content: space-evenly; |
| | | align-items: center; |
| | | font-size: 16px; |
| | | } |
| | | } |
| | | |
| | | .content-container { |
| | | position: relative; |
| | | width: 100%; |
| | | height: 100%; |
| | | background-repeat: no-repeat; |
| | | background-size: 100% 100%; |
| | | |
| | | .device-status-info { |
| | | font-size: 16px; |
| | | width: 400px; |
| | | position: absolute; |
| | | top: 5px; |
| | | right: 5px; |
| | | top: 40px; |
| | | right: 40px; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | .content-container { |
| | | width: 100%; |
| | | height: calc(100% - 80px); |
| | | background-repeat: no-repeat; |
| | | background-size: 100% 100%; |
| | | |
| | | |
| | | .single-device { |
| | | position: absolute; |
| | |
| | | width: 100%; |
| | | height: 100%; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items:end ; |
| | | |
| | | |
| | | .status-image { |
| | | background-size: 100% 100%; |
| | | background-repeat: no-repeat; |
| | | width: 45px; |
| | | margin-right: 10px; |
| | | width: 10px; |
| | | height: 60%; |
| | | margin-right: 5px; |
| | | } |
| | | |
| | | .device-image { |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <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"> |
| | | <OEEAnalysisList 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 OEEAnalysisList from './modules/OEEAnalysis/OEEAnalysisList' |
| | | |
| | | export default { |
| | | name: 'OEEAnalysis', |
| | | components: { |
| | | OEEAnalysisList, |
| | | 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> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <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-range-picker |
| | | :placeholder="['å¼å§æ¶é´', 'ç»ææ¶é´']" |
| | | format="YYYY-MM" |
| | | :value="dates" |
| | | :mode="['month', 'month']" |
| | | @panelChange="dateParamChange" |
| | | /> |
| | | </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> |
| | | <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 |
| | | :scroll="{ x: 1500, y: false }"> |
| | | |
| | | </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="['10','15','20','25']" |
| | | @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' |
| | | |
| | | export default { |
| | | name: 'OEEAnalysisList', |
| | | components: {}, |
| | | data() { |
| | | return { |
| | | typeTree: '', |
| | | typeParent: 1, |
| | | typeEquipment: 1, |
| | | allowClear: true, |
| | | allowClearSu: true, |
| | | dates: [moment().subtract('month', 1), moment().subtract('month', 1)], |
| | | identifying: [], |
| | | queryParam: { |
| | | pageSize: 10, |
| | | pageNo: 1 |
| | | }, |
| | | queryParamEquip: {}, |
| | | queryParamPeople: {}, |
| | | url: { |
| | | list: '/mdc/mdcOverallEquipmentEfficiency/list', |
| | | initShiftList: '/mdc/mdcMdcShift/initShiftList', |
| | | initShiftSubList: '/mdc/mdcShiftSub/initShiftSubList' |
| | | }, |
| | | shiftList: [], |
| | | shiftSubList: [], |
| | | 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, |
| | | fixed: 'left' |
| | | }, |
| | | { |
| | | title: '设å¤åç§°', |
| | | align: 'center', |
| | | width: 150, |
| | | dataIndex: 'equipmentName', |
| | | fixed: 'left' |
| | | }, |
| | | { |
| | | title: '设å¤åå·', |
| | | align: 'center', |
| | | width: 110, |
| | | dataIndex: 'equipmentModel' |
| | | }, |
| | | { |
| | | title: 'æ¥æ', |
| | | align: 'center', |
| | | width: 100, |
| | | dataIndex: 'validDate' |
| | | }, |
| | | { |
| | | title: 'çæ¬¡', |
| | | align: 'center', |
| | | width: 80, |
| | | dataIndex: 'shift' |
| | | }, |
| | | { |
| | | title: 'æ¯çå°æ¶', |
| | | dataIndex: 'shiftTimeCount', |
| | | align: 'center', |
| | | width: 110 |
| | | }, |
| | | { |
| | | title: 'å çæ¶é´ï¼åéï¼', |
| | | dataIndex: 'overtime', |
| | | align: 'center', |
| | | width: 110 |
| | | }, |
| | | { |
| | | title: 'å®é
ç产天æ°', |
| | | dataIndex: 'actualWorkDayCount', |
| | | align: 'center', |
| | | width: 120 |
| | | }, |
| | | { |
| | | title: 'æåº¦å®é
çäº§æ»æ¶é´ï¼åéï¼', |
| | | dataIndex: 'monthActualWorkDayTimeCount', |
| | | align: 'center', |
| | | width: 110 |
| | | }, |
| | | { |
| | | title: 'é计ååæºæå¤±ï¼åéï¼ï¼ä¸ä¸ªæï¼', |
| | | children: [ |
| | | { |
| | | title: 'æ
éåæº', |
| | | dataIndex: 'breakdownDownDuration', |
| | | align: 'center', |
| | | width: 100 |
| | | }, |
| | | { |
| | | title: 'æ¢åè°è¯', |
| | | dataIndex: 'conversionDebugDuration', |
| | | align: 'center', |
| | | width: 100 |
| | | }, |
| | | { |
| | | title: 'ç©æç缺', |
| | | dataIndex: 'materialShortageDuration', |
| | | align: 'center', |
| | | width: 100 |
| | | }, |
| | | { |
| | | title: '计åçä»»å¡', |
| | | dataIndex: 'plannedTaskDuration', |
| | | align: 'center', |
| | | width: 110 |
| | | }, |
| | | { |
| | | title: 'æ£éª', |
| | | dataIndex: 'inspectDuration', |
| | | align: 'center', |
| | | width: 100 |
| | | }, |
| | | { |
| | | title: 'å
¶ä»', |
| | | dataIndex: 'otherDuration', |
| | | align: 'center', |
| | | width: 100 |
| | | } |
| | | ] |
| | | }, |
| | | { |
| | | title: '计ååæºæ¶é´ï¼åéï¼ï¼ä¸ä¸ªæï¼', |
| | | children: [ |
| | | { |
| | | title: '计åä¿å
»', |
| | | dataIndex: 'plannedMaintenanceDuration', |
| | | align: 'center', |
| | | width: 100 |
| | | }, |
| | | { |
| | | title: 'ä¼è®®/å¹è®', |
| | | dataIndex: 'conferenceTrainingDuration', |
| | | align: 'center', |
| | | width: 110 |
| | | }, |
| | | { |
| | | title: 'å
¶ä»ä¼æ¯ç', |
| | | dataIndex: 'otherRestDuration', |
| | | align: 'center', |
| | | width: 110 |
| | | }] |
| | | }, |
| | | { |
| | | title: 'è´è·æ¶é´ï¼å°æ¶ï¼', |
| | | dataIndex: 'loadTime', |
| | | align: 'center', |
| | | width: 110 |
| | | }, |
| | | { |
| | | title: 'æ¶é´å¼å¨ç', |
| | | dataIndex: 'timeActuationRate', |
| | | align: 'center', |
| | | width: 110, |
| | | customRender: text => text != 0 ? text * 100 + '%' : 0 |
| | | }, |
| | | { |
| | | title: 'å å·¥é¶ä»¶æ°ï¼ä»¶ï¼', |
| | | dataIndex: 'processQuantity', |
| | | align: 'center', |
| | | width: 120 |
| | | }, |
| | | { |
| | | title: 'æ åå å·¥æ¶é´ï¼åéï¼', |
| | | dataIndex: 'standardProcessDuration', |
| | | align: 'center', |
| | | width: 120 |
| | | }, |
| | | { |
| | | title: 'æ§è½å¼å¨ç', |
| | | dataIndex: 'performanceRate', |
| | | align: 'center', |
| | | width: 110, |
| | | customRender: text => text != 0 ? text * 100 + '%' : 0 |
| | | }, |
| | | { |
| | | title: 'åºåæ°', |
| | | dataIndex: 'unqualifiedQuantity', |
| | | align: 'center', |
| | | width: 100 |
| | | }, |
| | | { |
| | | title: 'åæ ¼ç', |
| | | dataIndex: 'passRate', |
| | | align: 'center', |
| | | width: 100, |
| | | customRender: text => text != 0 ? text * 100 + '%' : 0 |
| | | }, |
| | | { |
| | | title: '设å¤ç»¼åæç', |
| | | dataIndex: 'overallEquipmentEfficiency', |
| | | align: 'center', |
| | | width: 120, |
| | | customRender: text => text != 0 ? text * 100 + '%' : 0 |
| | | } |
| | | ], |
| | | dataSource: [] |
| | | } |
| | | }, |
| | | props: { nodeTree: '', Type: '', nodePeople: '' }, |
| | | created() { |
| | | this.initShiftList() |
| | | this.queryParam.startTime = moment(this.dates[0]).format('YYYY-MM') |
| | | this.queryParam.endTime = moment(this.dates[1]).format('YYYY-MM') |
| | | this.queryParam.typeTree = '1' |
| | | this.loadData() |
| | | }, |
| | | 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 |
| | | this.queryParam.startTime = moment(this.dates[0]).format('YYYY-MM') |
| | | this.queryParam.endTime = moment(this.dates[1]).format('YYYY-MM') |
| | | }, |
| | | |
| | | initShiftList() { |
| | | getAction(this.url.initShiftList).then((res) => { |
| | | if (res.success) { |
| | | this.shiftList = res.result |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | initShiftSubList(val) { |
| | | //æ¯æ¬¡éæ°éæ©çå¶æ¶ç次æ¸
ç©ºä¸æ¾ç¤ºplaceholderå
容 |
| | | this.queryParam.shiftSubId = undefined |
| | | getAction(this.url.initShiftSubList, { shiftId: val }).then((res) => { |
| | | if (res.success) { |
| | | this.shiftSubList = res.result |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | initShiftSubListChange() { |
| | | getAction(this.url.initShiftSubList, { shiftId: this.queryParam.shiftId }).then((res) => { |
| | | if (res.success) { |
| | | this.shiftSubList = res.result |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | exportExcel() { |
| | | $('#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.typeTree = this.queryParam.typeTree |
| | | this.typeParent = this.queryParam.parentId |
| | | this.typeEquipment = this.queryParam.equipmentId |
| | | this.queryParam = { |
| | | pageSize: 10, |
| | | pageNo: 1 |
| | | } |
| | | this.dates = [] |
| | | this.shiftSubList = [] |
| | | this.queryParam.typeTree = this.typeTree |
| | | this.queryParam.parentId = this.typeParent |
| | | this.queryParam.equipmentId = this.typeEquipment |
| | | this.loadData() |
| | | }, |
| | | |
| | | loadData() { |
| | | getAction(this.url.list, this.queryParam).then(res => { |
| | | if (res.success) { |
| | | this.dataSource = res.result |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | /** |
| | | * å页å¨é¡µæ°åçæ¹åæ¶è§¦å |
| | | * @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() |
| | | } |
| | | } |
| | | } |
| | | </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> |
| | |
| | | handleCancel() { |
| | | this.$emit('close') |
| | | this.visible = false |
| | | this.modalNode.removeEventListener('mouseleave', this.closeModal) |
| | | // this.modalNode.removeEventListener('mouseleave', this.closeModal) |
| | | if(this.modalTimer){ |
| | | clearInterval(this.modalTimer) |
| | | this.modalTimer = null |
| | |
| | | }, |
| | | |
| | | getModalNode() { |
| | | console.log(document.querySelector('.ant-modal-content')) |
| | | this.modalNode = document.querySelector('.ant-modal-content') |
| | | this.timeout = setTimeout(() => { |
| | | this.modalNode.addEventListener('mouseleave', this.closeModal) |
| | | }, 100) |
| | | // console.log(document.querySelector('.ant-modal-content')) |
| | | // this.modalNode = document.querySelector('.ant-modal-content') |
| | | // this.timeout = setTimeout(() => { |
| | | // this.modalNode.addEventListener('mouseleave', this.closeModal) |
| | | // }, 100) |
| | | }, |
| | | |
| | | closeModal() { |
| | |
| | | scopedSlots: { customRender: 'backgroundImage' }, |
| | | }, |
| | | { |
| | | title: '设å¤ç¼å·é¢è²', |
| | | dataIndex: 'equipmentIdColor', |
| | | align: 'center', |
| | | }, |
| | | { |
| | | title: 'æä½', |
| | | dataIndex: 'action', |
| | | align: 'center', |
| | |
| | | <a-form-model-item label="车é´èæ¯å¾" required prop="backgroundImage"> |
| | | <j-image-upload class="avatar-uploader" text="ä¸ä¼ " v-model="model.backgroundImage"></j-image-upload> |
| | | </a-form-model-item> |
| | | <a-form-model-item label="设å¤ç¼å·é¢è²"> |
| | | <a-input type="color" v-model="model.equipmentIdColor"></a-input> |
| | | </a-form-model-item> |
| | | </a-form-model> |
| | | </a-spin> |
| | | </a-modal> |
| | |
| | | |
| | | export default { |
| | | name: 'WorkshopModal', |
| | | components: {}, |
| | | data() { |
| | | return { |
| | | title: 'æä½', |
| | |
| | | { min: 0, max: 64, message: 'é¿åº¦ä¸è¶
è¿ 64 个å符', trigger: 'blur' }, |
| | | { validator: this.validateRoleCode } |
| | | ], |
| | | backgroundImage:[ |
| | | backgroundImage: [ |
| | | { required: true, message: '请ä¸ä¼ 车é´èæ¯å¾!' } |
| | | ] |
| | | } |
| | |
| | | duration: 4, |
| | | }); |
| | | //è´¦æ·å¯ç ç»å½éè¯¯åæ´æ°éªè¯ç |
| | | if (this.customActiveKey === 'tab1' && description.indexOf('å¯ç é误') > 0) { |
| | | this.$refs.alogin.handleChangeCheckCode() |
| | | } |
| | | // if (this.customActiveKey === 'tab1' && description.indexOf('å¯ç é误') > 0) { |
| | | // this.$refs.alogin.handleChangeCheckCode() |
| | | // } |
| | | this.loginBtn = false; |
| | | }, |
| | | loginSelectOk() { |