src/api/signage.js
@@ -24,5 +24,9 @@ // ç¼è¾è½¦é´ä¿¡æ¯ editWorkshopApi: params => putAction('/mdc/mdcWorkshopInfo/edit', params), // è·åäºçº§è½¦é´ä¿¡æ¯ getWorkshopListApi: () => getAction('/mdc/mdcWorkshopInfo/getProductionList') getWorkshopListApi: () => getAction('/mdc/mdcWorkshopInfo/getProductionList'), // è·å车é´ä¸å·¥æ®µå表 getSectionListApi: productionId => getAction('/mdc/largeScreen/productionList', { productionId }), // è·å车é´mes产éå表 getMesProductionListApi: params => getAction('/mdc/mdcEquipmentOverFla/list', params) } src/views/mdc/base/EquipmentList.vue
@@ -280,6 +280,12 @@ dataIndex:'equipmentStatus_dictText' }, { title:'设å¤å±æ§', align:'center', width: 100, dataIndex:'attribute_dicText' }, { title: 'æºåºIP', align: 'center', width: 150, src/views/mdc/base/WorkshopSignage.vue
@@ -5,7 +5,8 @@ <div class="left-col"> <div class="col-content"> <div class="content-title">{{workshopDetails.workshopName}}#è®¾å¤æ åµ</div> <workshop-device-overview ref="workshopDeviceOverviewRef" :currentProductionId="currentProductionId" <workshop-device-overview ref="workshopDeviceOverviewRef" :workshopName="workshopDetails.workshopName" :currentProductionId="currentProductionId" :equipmentStatusList="equipmentStatusList" :toDecimal2NoZero="toDecimal2NoZero"/> </div> <div class="col-content"> @@ -208,15 +209,15 @@ padding: 1% 5%; } .content-footer-container { height: 25%; /*.content-footer-container {*/ /*height: 25%;*/ .content-footer { font-size: 0.7vw; padding-left: 5%; height: 40%; } } /*.content-footer {*/ /*font-size: 0.7vw;*/ /*padding-left: 5%;*/ /*height: 40%;*/ /*}*/ /*}*/ .chart-container { flex: 1; src/views/mdc/base/modules/EquipmentList/UserModal.vue
@@ -19,17 +19,18 @@ </template> <a-spin :spinning="confirmLoading"> <a-form-model ref="form" :form="form" :model="model" :rules="validatorRules"> <a-form-model ref="form" :form="form" :model="model" :rules="validatorRules" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-row :gutter="24"> <a-col :span="12"> <a-form-model-item label="ç»ä¸ç¼ç " :labelCol="labelCol" :wrapperCol="wrapperCol" prop="equipmentId"> <a-form-model-item label="ç»ä¸ç¼ç " prop="equipmentId"> <a-input-search :readOnly="true" v-model="model.equipmentId" :disabled="disSearch" @search="deviceSearch" enter-button placeholder='è¯·éæ©ç»ä¸ç¼ç ' /> </a-form-model-item> </a-col> <a-col :span="12"> <a-form-model-item label="设å¤åç§°" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-model-item label="设å¤åç§°"> <a-input :disabled="disSearch" :readOnly="disableSubmit" allow-clear placeholder="请è¾å ¥è®¾å¤åç§°" v-model="model.equipmentName"/> </a-form-model-item> @@ -38,11 +39,13 @@ <a-row :gutter="24"> <a-col :span="12"> <a-form-model-item v-if="isDepartType == 0" label="é¨é¨åé " :labelCol="labelCol" :wrapperCol="wrapperCol" v-show="!departDisabled"> <j-select-equipment-depart :disabled="disableSubmit" v-model="model.selectedDeparts" :multi="false" @back="backDepartInfo" :backDepart="true" :treeOpera="true"></j-select-equipment-depart> <a-form-model-item v-if="isDepartType == 0" label="é¨é¨åé " v-show="!departDisabled"> <j-select-equipment-depart :disabled="disableSubmit" v-model="model.selectedDeparts" :multi="false" @back="backDepartInfo" :backDepart="true" :treeOpera="true"></j-select-equipment-depart> </a-form-model-item> <a-form-model-item v-if="isDepartType == -1" label="设å¤ç±»å" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-model-item v-if="isDepartType == -1" label="设å¤ç±»å"> <a-select :disabled="disableSubmit" :readOnly="disableSubmit" placeholder="è¯·éæ©è®¾å¤ç±»å" :triggerChange="true" v-model="model.equipmentType"> @@ -53,16 +56,19 @@ </a-form-model-item> </a-col> <a-col :span="12"> <a-form-model-item label="车é´åé " :labelCol="labelCol" :wrapperCol="wrapperCol" v-show="!productionDisabled" ref="selectedProduction" prop="selectedProduction"> <a-form-model-item label="车é´åé " v-show="!productionDisabled" ref="selectedProduction" prop="selectedProduction"> <!--<j-select-equipment-production v-decorator="['selectedProduction',{rules:[{required:true,message:'è¯·éæ©è½¦é´!'}]}]" :multi="false" @back="backProductionInfo" :backProduction="true" :treeProductOpera="true"></j-select-equipment-production>--> <j-select-equipment-production :disabled="disableSubmit" v-model="model.selectedProduction" :multi="false" @back="backProductionInfo" :backProduction="true" :treeProductOpera="true"></j-select-equipment-production> <j-select-equipment-production :disabled="disableSubmit" v-model="model.selectedProduction" :multi="false" @back="backProductionInfo" :backProduction="true" :treeProductOpera="true"></j-select-equipment-production> </a-form-model-item> </a-col> </a-row> <a-row :gutter="24"> <a-col :span="12"> <a-form-model-item v-if="isDepartType == 0" label="设å¤ç±»å" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-model-item v-if="isDepartType == 0" label="设å¤ç±»å"> <a-select :disabled="disableSubmit" :readOnly="disableSubmit" placeholder="è¯·éæ©è®¾å¤ç±»å" :triggerChange="true" v-model="model.equipmentType"> @@ -77,13 +83,13 @@ <a-row :gutter="24"> <a-col :span="12"> <a-form-model-item label="æºåºIP" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-model-item label="æºåºIP"> <a-input :disabled="true" :readOnly="disableSubmit" placeholder="请è¾å ¥æºåºIP" v-model="model.equipmentIp"/> </a-form-model-item> </a-col> <a-col :span="12"> <a-form-model-item label="æºåºç«¯å£" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-model-item label="æºåºç«¯å£"> <a-input :disabled="true" :readOnly="disableSubmit" placeholder="请è¾å ¥æºåºç«¯å£" v-model="model.dataPort"/> </a-form-model-item> @@ -92,14 +98,14 @@ <a-row :gutter="24"> <a-col :span="12"> <a-form-model-item label="驱å¨ç±»å" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-model-item label="驱å¨ç±»å"> <j-dict-select-tag :disabled="true" :readOnly="disableSubmit" placeholder="è¯·éæ©é©±å¨ç±»å" :triggerChange="true" dictCode="mdc_driveType" v-model="model.driveType" allow-clear/> </a-form-model-item> </a-col> <a-col :span="12"> <a-form-model-item label="设å¤åå·" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-model-item label="设å¤åå·"> <a-input :disabled="true" :readOnly="disableSubmit" allow-clear placeholder="请è¾å ¥è®¾å¤åå·" v-model="model.equipmentModel"/> </a-form-model-item> @@ -108,20 +114,28 @@ <a-row :gutter="24"> <a-col :span="12"> <a-form-model-item label="ç³»ç»ç±»å" :labelCol="labelCol" :wrapperCol="wrapperCol"> <j-dict-select-tag placeholder="è¯·éæ©ç³»ç»ç±»å" :triggerChange="true" dictCode="system_type" v-model="model.systemType" allow-clear/> <a-form-model-item label="ç³»ç»ç±»å"> <j-dict-select-tag placeholder="è¯·éæ©ç³»ç»ç±»å" :triggerChange="true" dictCode="system_type" v-model="model.systemType" allow-clear/> </a-form-model-item> </a-col> <a-col :span="12"> <a-form-model-item label="设å¤ç¶æ" :labelCol="labelCol" :wrapperCol="wrapperCol"> <j-dict-select-tag placeholder="è¯·éæ©è®¾å¤ç¶æ" :triggerChange="true" dictCode="mdc_equipment_status" v-model="model.equipmentStatus" allow-clear/> <a-form-model-item label="设å¤ç¶æ"> <j-dict-select-tag placeholder="è¯·éæ©è®¾å¤ç¶æ" :triggerChange="true" dictCode="mdc_equipment_status" v-model="model.equipmentStatus" allow-clear/> </a-form-model-item> </a-col> </a-row> <a-row :gutter="24"> <a-col :span="12" v-has="'equipment_attribute'"> <a-form-model-item label="设å¤å±æ§"> <j-dict-select-tag v-model="model.attribute" type="radio" dictCode="equipment_attribute"/> </a-form-model-item> </a-col> <a-col :span="12"> <a-form-model-item label="æåº" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-model-item label="æåº"> <a-input :disabled="disableSubmit" :readOnly="disableSubmit" placeholder="请è¾å ¥æåº" v-model="model.sortNo" style="width: 100%"/> </a-form-model-item> @@ -130,7 +144,7 @@ <a-row :gutter="24"> <a-col :span="24"> <a-form-model-item :labelCol="{span:3}" :wrapperCol="{span:21}" label="夿³¨"> <a-form-model-item :labelCol="{span:4}" :wrapperCol="{span:19}" label="夿³¨"> <a-textarea :disabled="disableSubmit" :readOnly="disableSubmit" placeholder="请è¾å ¥å¤æ³¨" v-model="model.remark"/> </a-form-model-item> @@ -155,18 +169,19 @@ import pick from 'lodash.pick' import moment from 'moment' import Vue from 'vue' import { ACCESS_TOKEN } from "@/store/mutation-types" import { ACCESS_TOKEN } from '@/store/mutation-types' import { getAction } from '@/api/manage' import { addEquipment,editEquipment} from '@/api/api' import { disabledAuthFilter } from "@/utils/authFilter" import { disabledAuthFilter } from '@/utils/authFilter' import { duplicateCheck } from '@/api/api' import JSelectEquipmentProduction from '../../../../../components/jeecgbiz/JSelectEquipmentProduction' import JSelectProduction from '../../../../../components/jeecgbiz/JSelectProduction' import DeviceListModel from './DeviceListModal' import JSelectEquipmentDepart from '../../../../../components/jeecgbiz/JSelectEquipmentDepart' import {mapActions} from 'vuex' export default { name: "UserModal", name: 'UserModal', components: { JSelectProduction, JSelectEquipmentDepart, @@ -183,10 +198,10 @@ drawerWidth:700, modalToggleFlag:true, confirmDirty: false, userId:"", //ä¿åç¨æ·id userId: '', //ä¿åç¨æ·id // disableSubmit:false, disableSubmit: true, dateFormat:"YYYY-MM-DD", dateFormat: 'YYYY-MM-DD', form: this.$form.createForm(this), validatorRules:{ @@ -195,7 +210,7 @@ [ { required: true, message: 'è¯·éæ©è®¾å¤ç¼å·!' }, } // { // validator: this.validatequipmentId // } @@ -211,38 +226,38 @@ }, departIdShow:false, title:"æä½", title: 'æä½', visible: false, model: { equipmentId: "", equipmentName: "", equipmentModel: "", equipmentIp: "", dataPort: "", driveType: "", systemType: "", equipmentId: '', equipmentName: '', equipmentModel: '', equipmentIp: '', dataPort: '', driveType: '', systemType: '', equipmentStatus: '0', deviceLevel: "", deviceCategory: "", deviceLevel: '', deviceCategory: '' }, labelCol: { xs: { span: 24 }, sm: { span: 8 }, sm: { span: 8 } }, wrapperCol: { xs: { span: 24 }, sm: { span: 15 }, sm: { span: 14 } }, uploadLoading:false, confirmLoading: false, headers:{}, url: { fileUpload: window._CONFIG['domianURL']+"/sys/common/upload", userWithDepart: "/mdc/mdcEquipment/equipmentDepartList", // å¼å ¥ä¸ºæå®ç¨æ·æ¥çé¨é¨ä¿¡æ¯éè¦çurl fileUpload: window._CONFIG['domianURL'] + '/sys/common/upload', userWithDepart: '/mdc/mdcEquipment/equipmentDepartList', // å¼å ¥ä¸ºæå®ç¨æ·æ¥çé¨é¨ä¿¡æ¯éè¦çurl //å¼å ¥ä¸ºæå®ç¨æ·æ¥ç车é´ä¿¡æ¯éè¦çurl userProductionList: '/mdc/mdcEquipment/equipmentProductionList', userId:"/sys/user/generateUserId", // å¼å ¥çææ·»å ç¨æ·æ åµä¸çurl syncUserByUserName:"/act/process/extActProcess/doSyncUserByUserName",//åæ¥ç¨æ·å°å·¥ä½æµ userId: '/sys/user/generateUserId', // å¼å ¥çææ·»å ç¨æ·æ åµä¸çurl syncUserByUserName: '/act/process/extActProcess/doSyncUserByUserName',//åæ¥ç¨æ·å°å·¥ä½æµ queryTenantList: '/sys/tenant/queryList', check:'/sys/duplicate/check', queryEquipmentType:'/mdc/mdcEquipmentType/queryEquipmentType' @@ -256,8 +271,8 @@ } }, created () { const token = Vue.ls.get(ACCESS_TOKEN); this.headers = {"X-Access-Token":token} const token = Vue.ls.get(ACCESS_TOKEN) this.headers = { 'X-Access-Token': token } this.queryGroup() this.queryTreeData() // this.initRoleList() @@ -265,7 +280,7 @@ }, computed:{ uploadAction:function () { return this.url.fileUpload; return this.url.fileUpload } }, methods: { @@ -279,7 +294,7 @@ this.$notification.warning({ message:'æ¶æ¯', description:res.message }); }) } }).finally(() =>{ }) @@ -296,7 +311,7 @@ this.$notification.warning({ message:'æ¶æ¯', description:res.message }); }) } }).finally(() => { this.loading = false @@ -322,18 +337,31 @@ this.$refs.deviceListModel.disableSubmit = false }, add () { this.refresh(); this.edit({activitiSync:'1',userIdentity:1,equipmentId:"",equipmentName:"",equipmentModel:"",equipmentIp:'',dataPort:"",driveType:"",controlSystem:"",saveTableName:"",equipmentStatus:'0'}); this.refresh() this.edit({ activitiSync: '1', userIdentity: 1, equipmentId: '', equipmentName: '', equipmentModel: '', equipmentIp: '', dataPort: '', driveType: '', controlSystem: '', saveTableName: '', equipmentStatus: '0', attribute: 0 }) }, edit (record) { let that = this; that.visible = true; let that = this that.visible = true //æ ¹æ®å±å¹å®½åº¦èªéåºæ½å±å®½åº¦ this.resetScreenSize(); this.resetScreenSize() // that.userId = record.id; // console.log(record) that.model = Object.assign({}, record); that.model = Object.assign({}, record) // that.model = Object.assign({},{selectedroles:'',selectedProduction:''}, record); // this.model = Object.assign({}, record) @@ -341,43 +369,43 @@ this.form.setFieldsValue(pick(that.model, 'selectedDeparts', 'selectedProduction', 'equipmentId', 'equipmentName', 'equipmentModel', 'equipmentType', 'equipmentIp', 'dataPort', 'driveType', 'sortNo', 'remark','systemVersion','devicePower','controlSystem','saveTableName')) }) if(record.hasOwnProperty("id")){ if (record.hasOwnProperty('id')) { // that.getUserRoles(record.id); that.getUserDeparts(record.id); that.getUserDeparts(record.id) } // console.log('that.model=',that.model) }, isDisabledAuth(code){ return disabledAuthFilter(code); return disabledAuthFilter(code) }, //çªå£æå¤§å忢 toggleScreen(){ if(this.modalToggleFlag){ this.modalWidth = window.innerWidth; this.modalWidth = window.innerWidth }else{ this.modalWidth = 800; this.modalWidth = 800 } this.modalToggleFlag = !this.modalToggleFlag; this.modalToggleFlag = !this.modalToggleFlag }, // æ ¹æ®å±å¹åå,设置æ½å±å°ºå¯¸ resetScreenSize(){ let screenWidth = document.body.clientWidth; let screenWidth = document.body.clientWidth if(screenWidth < 500){ this.drawerWidth = screenWidth; this.drawerWidth = screenWidth }else{ this.drawerWidth = 700; this.drawerWidth = 700 } }, getUserDeparts(userid){ let that = this; let that = this //é¨é¨çurl getAction(that.url.userWithDepart,{equipmentId:userid}).then((res)=>{ if(res.success){ // console.log(res.result) let departOptions=[]; let departOptions = [] let selectDepartKeys=[] for (let i = 0; i < res.result.length; i++) { selectDepartKeys.push(res.result[i].key); selectDepartKeys.push(res.result[i].key) //æ°å¢è´è´£é¨é¨éæ©ä¸ææ¡ departOptions.push({ value: res.result[i].key, @@ -385,10 +413,10 @@ }) } that.model.selectedDeparts = selectDepartKeys.join(",") that.model.selectedDeparts = selectDepartKeys.join(',') // that.model.selectedProduction = selectDepartKeys.join(",") that.nextDepartOptions=departOptions; that.nextDepartOptions = departOptions // console.log('that.nextDepartOptions=',that.nextDepartOptions) } }) @@ -396,11 +424,11 @@ getAction(that.url.userProductionList,{equipmentId:userid}).then((res)=>{ if(res.success){ // console.log(res.result) let ProductionOptions=[]; let ProductionOptions = [] let selectProductKeys=[] // console.log(res.result) for (let i = 0; i < res.result.length; i++) { selectProductKeys.push(res.result[i].key); selectProductKeys.push(res.result[i].key) //æ°å¢è´è´£é¨é¨éæ©ä¸ææ¡ ProductionOptions.push({ value: res.result[i].key, @@ -408,9 +436,9 @@ }) } that.model.selectedProduction = selectProductKeys.join(",") that.model.selectedProduction = selectProductKeys.join(',') that.nextProductionOptions=ProductionOptions; that.nextProductionOptions = ProductionOptions // console.log('that.nextProductionOptions=',that.nextProductionOptions) } }) @@ -418,88 +446,88 @@ }, backDepartInfo(info) { // console.log(info) this.model.departIds = this.model.selectedDeparts; this.model.departIds = this.model.selectedDeparts this.nextDepartOptions = info.map((item,index,arr)=>{ let c = {label:item.text, value: item.value+""} return c; let c = { label: item.text, value: item.value + '' } return c }) }, backProductionInfo(info) { // console.log(info) this.model.productionIds = this.model.selectedProduction; this.model.productionIds = this.model.selectedProduction this.nextProductionOptions = info.map((item,index,arr)=>{ let c = {label:item.text, value: item.value+""} return c; let c = { label: item.text, value: item.value + '' } return c }) }, refresh () { this.userId="" this.nextDepartOptions=[]; this.nextProductionOptions = []; this.departIdShow=false; this.userId = '' this.nextDepartOptions = [] this.nextProductionOptions = [] this.departIdShow = false }, close () { this.$emit('close'); this.visible = false; this.disableSubmit = false; this.nextDepartOptions=[]; this.$emit('close') this.visible = false this.disableSubmit = false this.nextDepartOptions = [] this.nextProductionOptions = [] this.departIdShow=false; this.departIdShow = false // this.$refs.form.resetFields(); }, moment, handleSubmit () { const that = this; const that = this // 触å表åéªè¯ this.$refs.form.validate(valid => { if (valid) { that.confirmLoading = true; that.confirmLoading = true //妿æ¯ä¸çº§æ©ä¼ å ¥departIds,å¦å为空 // if(this.model.userIdentity!==2){ // this.model.departIds=""; // } let obj; let obj if(!this.model.id){ this.model.id = this.userId; obj=addEquipment(this.model); this.model.id = this.userId obj = addEquipment(this.model) }else{ obj=editEquipment(this.model,{ id: this.model.id }); }) } obj.then((res)=>{ if(res.success){ that.$notification.success({ message:'æ¶æ¯', description:res.message }); that.$emit('ok'); }) that.$emit('ok') }else{ that.$notification.warning({ message:'æ¶æ¯', description:res.message }); }) } }).finally(() => { that.confirmLoading = false; that.close(); that.confirmLoading = false that.close() }) }else{ return false; return false } }) }, handleConfirmBlur(e) { const value = e.target.value; const value = e.target.value this.confirmDirty = this.confirmDirty || !!value }, identityChange(e){ if(e.target.value===1){ this.departIdShow=false; this.departIdShow = false }else{ this.departIdShow=true; this.departIdShow = true } }, /** @@ -508,7 +536,7 @@ removeValidate(){ this.$refs.form.clearValidate() } }, } } </script> @@ -518,6 +546,7 @@ width:104px; height:104px; } .ant-upload-select-picture-card i { font-size: 49px; color: #999; src/views/mdc/base/modules/OEEAnalysis/ComputeOeeModal.vue
@@ -1,6 +1,7 @@ <template> <a-modal title="计ç®OEE" :visible="visible" :width="550" @cancel="handleModalClose" @ok="handleComputeOee" :maskClosable="false"> <j-modal title="计ç®OEE" :visible="visible" :width="550" @cancel="handleModalClose" @ok="handleComputeOee" :maskClosable="false" :confirmLoading="confirmLoading"> <a-spin :spinning="confirmLoading"> <a-form-model :model="model" :labelCol="labelColLong" :wrapperCol="wrapperColLong"> <a-row> <a-col :span="24"> @@ -11,7 +12,8 @@ </a-col> </a-row> </a-form-model> </a-modal> </a-spin> </j-modal> </template> <script> @@ -23,6 +25,7 @@ data() { return { visible: false, confirmLoading: false, model: {}, dates: [], labelColLong: { @@ -46,6 +49,7 @@ return } this.confirmLoading = true mdcApi.computeOeeApi(this.model) .then(res => { if (res.success) { @@ -53,7 +57,8 @@ message: 'æ¶æ¯', description: res.message }) this.visible = false this.$emit('ok') this.handleModalClose() } else { this.$notification.error({ message: 'æ¶æ¯', @@ -67,6 +72,9 @@ description: '计ç®å¤±è´¥' }) }) .finally(() => { this.confirmLoading = false }) }, dateParamChange(value1, value2) { src/views/mdc/base/modules/OEEAnalysis/OEEAnalysisList.vue
@@ -49,7 +49,7 @@ </a-table> </div> <ComputeOeeModal ref="computeOeeModalRef"/> <ComputeOeeModal ref="computeOeeModalRef" @ok="modalFormOk"/> </div> </template> src/views/mdc/base/modules/OpenRateFractionAnalysis/OpenRateFractionAnalysisMain.vue
@@ -16,8 +16,9 @@ <a-space> <a-time-picker :default-value="moment('00:00', 'HH:mm')" format="HH:mm" @change="onChangeStart" :allowClear="false"/> è³ <a-time-picker :default-value="moment('08:00', 'HH:mm')" format="HH:mm" @change="onChangeEnd" :allowClear="false"/> <a-time-picker :default-value="moment('23:59', 'HH:mm')" format="HH:mm" @change="onChangeEnd" :allowClear="false"/> <a-button type="primary" @click="searchQuery" icon="search">æ¥è¯¢</a-button> <a-button type="primary" @click="exportExcel" icon="download">导åº</a-button> </a-space> </a-form-item> </a-col> @@ -28,17 +29,16 @@ <a-spin :spinning="loading"> <div id="Efficiency" class="container" style="margin-bottom: 15px;"> <div class="table2"> <table class="dataContent table" border="1" cellspacing="0" cellpadding="0" style="white-space: nowrap;text-align: center;"> <table class="dataContent table" border="1" cellspacing="0" cellpadding="0"> <thead> <tr class="thead fixed equipname"> <th class="thgu dong1 name" rowspan="2" style="min-width: 150px; max-width: 150px;width: 150px;"> <th class="thgu dong1 name" style="min-width: 150px; max-width: 150px;width: 150px;"> 设å¤ç¼å· </th> <th class="thgu dong2 name" rowspan="2" style="min-width: 162px; max-width: 162px;width: 162px;"> <th class="thgu dong2 name" style="min-width: 162px; max-width: 162px;width: 162px;"> 设å¤åç§° </th> <th class="thgu dong3 name" rowspan="2" style="min-width: 100px; max-width: 100px;width: 100px;"> <th class="thgu dong3 name" style="min-width: 100px; max-width: 100px;width: 100px;"> 设å¤ç±»å </th> <template v-for="(tableHead, index) in tableHeads"> @@ -128,7 +128,7 @@ this.queryParam.startDate = moment(this.dates[0]).format('YYYYMMDD') this.queryParam.endDate = moment(this.dates[1]).format('YYYYMMDD') this.queryParam.startTime = '00:00' this.queryParam.endTime = '08:00' this.queryParam.endTime = '23:59' this.queryParam.typeTree = '1' this.loadData1() @@ -183,6 +183,17 @@ }, methods: { moment, exportExcel() { $('#Efficiency').table2excel({ exclude: '.noExl', name: 'Excel Document Name', filename: 'å©ç¨çåæ®µåæ', exclude_img: true, fileext: '.xls', exclude_links: true, exclude_inputs: true }) }, onChangeStart(time, timeString) { this.queryParam.startTime = timeString // console.log(time, timeString); src/views/mdc/base/modules/WorkshopSignage/SignageModal.vue
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,242 @@ <template> <a-modal :title="modalTitle" :width="modalWidth" :visible="visible" :footer="null" @cancel="visible=false" destroyOnClose> <a-form layout="inline" @keyup.enter.native="loadData(1)"> <a-form-item label="工段"> <a-select default-value="" style="width: 200px" @select="handleSelectChange"> <a-select-option key="">å ¨é¨</a-select-option> <a-select-option v-for="item in selectList" :key="item.id">{{item.productionName}}</a-select-option> </a-select> </a-form-item> <a-form-item> <a-button type="primary" @click="loadData(1)">æ¥è¯¢</a-button> </a-form-item> </a-form> <a-table :columns="columns" :dataSource="dataSource" :pagination="ipagination" :loading="loading" @change="handleTableChange" style="margin-top: 20px" rowKey="id"> <template slot="qualifiedStatus" slot-scope="text, record"> <span :style="{color:text==='æªå®æ'?'#f00':'#89D961',fontWeight:'bold'}">{{text}}</span> </template> </a-table> </a-modal> </template> <script> import signageApi from '@/api/signage' import { filterObj } from '@/utils/util' export default { name: 'SignageModal', components: {}, props: { modalWidth: { type: Number, default: 1048 }, modalTitle: { type: String }, productionId: { type: String } }, watch: { visible: { handler(newVal) { // æå¼å¼¹çªæ¶æ°æ®åå°ç¬¬ä¸é¡µä¸æ¯é¡µæ¾ç¤ºæå¤§æ¡æ°æ¢å¤ä¸ºæå°å¼ if (newVal) { this.getSectionListByApi() this.searchReset() this.ipagination.pageSize = +this.ipagination.pageSizeOptions[0] } } } }, data() { return { visible: false, selectList: [], queryParam: {}, loading: false, /* å页忰 */ ipagination: { current: 1, pageSize: 10, pageSizeOptions: ['10', '20', '30'], showTotal: (total, range) => { return range[0] + '-' + range[1] + ' å ±' + total + 'æ¡' }, showQuickJumper: true, showSizeChanger: true, total: 0 }, dataSource: [], columns: [ { align: 'center', title: 'å·¥ååç§°', dataIndex: 'workshop', key: 'workshop' }, { align: 'center', title: '工段åç§°', dataIndex: 'dept', key: 'dept' }, { align: 'center', title: 'é¶ä»¶ç¼å·', dataIndex: 'mdsItemCode', key: 'mdsItemCode' }, { align: 'center', title: 'ä¸è¾¾ä»»å¡é', key: 'batchNum', dataIndex: 'batchNum' }, { align: 'center', title: '宿任å¡é', key: 'qualifiedQty', dataIndex: 'qualifiedQty' }, { align: 'center', title: '宿ç¾åæ¯', key: 'qualifiedRate', dataIndex: 'qualifiedRate' }, { align: 'center', title: 'æ¯å¦å®æ', key: 'qualifiedStatus', dataIndex: 'qualifiedStatus', scopedSlots: { customRender: 'qualifiedStatus' } } ] } }, methods: { // è·å车é´å¯¹åºå·¥æ®µå表 getSectionListByApi() { const that = this signageApi.getSectionListApi(this.productionId) .then(res => { console.log('res--------', res) if (res.success) that.selectList = res.result }) }, loadData(arg) { //å è½½æ°æ® è¥ä¼ å ¥åæ°1åå 载第ä¸é¡µçå 容 if (arg === 1) this.ipagination.current = 1 const params = this.getQueryParams()//æ¥è¯¢æ¡ä»¶ params.productionId = this.productionId if (!params) return false this.loading = true signageApi.getMesProductionListApi(params) .then((res) => { if (res.success) { this.dataSource = res.result.records || res.result if (res.result.total) { this.ipagination.total = res.result.total } else { this.ipagination.total = 0 } } else { this.$message.warning(res.message) } }) .finally(() => { this.loading = false }) }, /** * å·¥æ®µéæ©ååæ¶è§¦å * @param value éæ©åkey */ handleSelectChange(value) { this.queryParam.proChildId = value }, getQueryParams() { //è·åæ¥è¯¢æ¡ä»¶ let sqp = {} const param = Object.assign(sqp, this.queryParam, this.isorter, this.filters) param.field = this.getQueryField() param.pageNo = this.ipagination.current param.pageSize = this.ipagination.pageSize return filterObj(param) }, getQueryField() { let str = 'id,' this.columns.forEach(function(value) { str += ',' + value.dataIndex }) return str }, searchReset() { this.queryParam = {} this.dataSource = [] this.loadData(1) }, /** * å页ååæ¶è§¦å * @param pagination å页忰 */ handleTableChange(pagination) { this.ipagination = pagination this.loadData() } } } </script> <style scoped> /deep/ .ant-modal-content, /deep/ .ant-modal-header, /deep/ .ant-table-placeholder, /deep/ .ant-pagination-item-active { background-color: #000; } /deep/ .ant-modal-title, /deep/ .ant-pagination-total-text, /deep/ .ant-modal-close, /deep/ .ant-form-item-label label, /deep/ .ant-table-placeholder .ant-empty-description, /deep/ .ant-pagination-options-quick-jumper { color: #fff; } /deep/ .ant-input, /deep/ .ant-pagination-item a, /deep/ .ant-pagination-item-link, /deep/ .ant-select-selection--single, /deep/ .ant-pagination-options-quick-jumper input, /deep/ .ant-select-dropdown-menu-item { color: #fff; background-color: #000; } /deep/ .ant-table-thead th { background-color: #5C5C5C; color: #fff; } /deep/ .ant-table-tbody td { background-color: #262626; color: #fff; } /deep/ .ant-table-tbody > tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected) > td { background: #7E7E7E; } /deep/ .ant-pagination-item-link:hover { color: #1890FF; border-color: #1890FF; } /deep/ .ant-select-dropdown-menu-item:hover:not(.ant-select-dropdown-menu-item-disabled) { background-color: #1890FF; } </style> src/views/mdc/base/modules/WorkshopSignage/WorkshopDeviceOverview.vue
@@ -1,6 +1,20 @@ <template> <div style="flex:1;display: flex;"> <div class="chart-container" :id="chartContainerId"></div> <!--<div style="height: 100%">--> <!--<div class="chart-container" :id="chartContainerId"></div>--> <!--</div>--> <div style="flex: 1;display: flex;flex-direction: column"> <div class="chart-container" :id="chartContainerId" style="flex: 1"></div> <div class="pie-value-container"> <div> <span class="color-square" style="background-color: #00923f"></span>宿é {{equipmentStatusCountObj.qualifiedQty}} </div> <div> <span class="color-square" style="background-color: #e67817"></span>ä»»å¡é {{equipmentStatusCountObj.planQty}} </div> </div> </div> <div class="equipment-state-container"> <div>è®¾å¤æ»æ°ï¼{{equipmentStatusCountObj.equipmentCount}}å°</div> <div>大修ã项修æ°éï¼{{equipmentStatusCountObj.repairCount}}å°</div> @@ -18,16 +32,22 @@ </div> </div> <SignageModal ref="signageModalRef" :modalTitle="modalTitle" :productionId="currentProductionId"/> </div> </template> <script> import signageApi from '@/api/signage' import SignageModal from './SignageModal' export default { name: 'WorkshopDeviceOverview', components: {}, components: { SignageModal }, props: { workshopName: { type: String }, currentProductionId: { type: String }, @@ -42,7 +62,8 @@ return { chartContainer: null, chartContainerId: 'left-col-chart1', equipmentStatusCountObj: {} equipmentStatusCountObj: {}, modalTitle: '' } }, mounted() { @@ -81,7 +102,7 @@ { name: 'ç±»ç®', type: 'pie', radius: '60%', radius: '90%', center: ['50%', '50%'], hoverAnimation: false, data: [ @@ -124,6 +145,12 @@ } option.series[0].data[0].value = yAxisData1 option.series[0].data[1].value = yAxisData2 this.chartContainer.on('click', () => { this.modalTitle = this.workshopName + '彿任å¡å®æç¾åæ¯' this.$refs.signageModalRef.visible = true }) this.chartContainer.setOption(option, true) }, @@ -155,6 +182,22 @@ </script> <style lang="less"> .pie-value-container { > div { text-align: center; margin-bottom: 5px; } .color-square { display: inline-block; width: 0.625vw; height: 0.45vw; border-radius: 0.1vw; background-color: #00ff80; margin-right: 0.4vw; } } .equipment-state-container { display: flex; flex-direction: column; src/views/mdc/base/modules/efficiencyReport/EfficiencyList.vue
@@ -44,6 +44,11 @@ v-model="dates" :allowClear="false"/> </a-form-item> </a-col> <a-col :md="6" :sm="6"> <a-form-item label="设å¤å±æ§"> <j-dict-select-tag v-model="queryParam.attribute" type="radio" dictCode="equipment_attribute"/> </a-form-item> </a-col> </a-row> <a-row :gutter="24" type="flex" align="middle"> src/views/system/UserList.vue
@@ -7,33 +7,16 @@ <a-row :gutter="24"> <a-col :md="6" :sm="12"> <a-form-item label="è´¦å·"> <a-form-item label="ç¨æ·è´¦å·"> <!--<a-input placeholder="请è¾å ¥è´¦å·æ¥è¯¢" v-model="queryParam.username"></a-input>--> <j-input placeholder="è¾å ¥è´¦å·æ¨¡ç³æ¥è¯¢" v-model="queryParam.username"></j-input> </a-form-item> </a-col> <a-col :md="6" :sm="8"> <a-form-item label="æ§å«"> <a-select v-model="queryParam.sex" placeholder="è¯·éæ©æ§å«"> <a-select-option value="">è¯·éæ©</a-select-option> <a-select-option value="1">ç·</a-select-option> <a-select-option value="2">女</a-select-option> </a-select> </a-form-item> </a-col> <template v-if="toggleSearchStatus"> <a-col :md="6" :sm="8"> <a-form-item label="çå®åå"> <a-input placeholder="请è¾å ¥çå®åå" v-model="queryParam.realname"></a-input> </a-form-item> </a-col> <a-col :md="6" :sm="8"> <a-form-item label="ææºå·ç "> <a-input placeholder="请è¾å ¥ææºå·ç æ¥è¯¢" v-model="queryParam.phone"></a-input> <a-form-item label="ç¨æ·å§å"> <a-input placeholder="请è¾å ¥ç¨æ·å§å" v-model="queryParam.realname"></a-input> </a-form-item> </a-col> @@ -46,16 +29,11 @@ </a-select> </a-form-item> </a-col> </template> <a-col :md="6" :sm="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> <a @click="handleToggleSearch" style="margin-left: 8px"> {{ toggleSearchStatus ? 'æ¶èµ·' : 'å±å¼' }} <a-icon :type="toggleSearchStatus ? 'up' : 'down'"/> </a> </span> </a-col> src/views/system/modules/UserModal.vue
@@ -82,6 +82,7 @@ <a-input placeholder="请è¾å ¥ç¨æ·å§å" v-model="model.realname" :readOnly="disableSubmit" /> </a-form-model-item> @@ -94,6 +95,7 @@ <a-input placeholder="请è¾å ¥å·¥å·" v-model="model.workNo" :readOnly="disableSubmit" /> </a-form-model-item> @@ -145,6 +147,7 @@ v-model="model.selectedProduction" :multi="true" @back="backProductionInfo" :disabled="disableSubmit" :backProduction="true" :treeProductOpera="true" ></j-select-production> @@ -215,7 +218,7 @@ <!--placeholder="请维æ¤ä¸å¿"--> <!-->--> <!--</j-multi-select-tag>--> </a-form-model-item> <!--</a-form-model-item>--> <!--<a-form-model-item--> <!--label="è´è´£é¨é¨"--> <!--:labelCol="labelCol"-->