生产管理

This commit is contained in:
helloDy
2024-05-20 14:55:36 +08:00
parent 9e90449d1a
commit 14fa1823f2
9 changed files with 9132 additions and 8684 deletions

View File

@@ -1,40 +1,49 @@
<!--
* @Author: zhp
* @Date: 2024-04-17 16:31:51
* @LastEditTime: 2024-04-17 17:01:14
* @LastEditors: zhp
* @LastEditTime: 2024-05-17 14:48:57
* @LastEditors: DY
* @Description:
-->
<template>
<el-drawer class="drawer" :visible.sync="visible" size="50%">
<el-drawer class="drawer" :visible.sync="visible" size="55%" @closed="$emit('destroy')">
<small-title slot="title" :no-padding="true">
{{ '新增' }}
{{ dataForm.id ? '编辑' : '新增' }}
</small-title>
<div class="detailBox">
<el-form ref="form" :model="dataForm" label-width="80px" label-position="top">
<el-row :gutter="24" style="padding: 0 32px;">
<el-col :span="8">
<el-form-item label="工厂名称" prop="factoryId">
<el-select v-model="dataForm.factoryId" placeholder="请选择工厂名称" multiple="true" clearable>
<el-option v-for="item in factoryList" :key="item.id" :label="item.name" :value="item.id">
<el-form-item v-if="ftype === 0" label="工厂名称" prop="factory">
<el-select v-model="dataForm.factory" placeholder="请选择工厂名称" clearable>
<el-option v-for="(item, index) in dhgfactoryList" :key="index" :label="item.name" :value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item v-else label="工厂名称" prop="factory">
<el-select v-model="dataForm.factory" placeholder="请选择工厂名称" clearable>
<el-option v-for="(item, index) in tyjxfactoryList" :key="index" :label="item.name" :value="item.id">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="工厂名称" prop="factoryId">
<el-select v-model="dataForm.factoryId" placeholder="请选择工厂名称" multiple="true" clearable>
<el-option v-for="item in factoryList" :key="item.id" :label="item.name" :value="item.id">
</el-option>
<el-form-item label="时间维度" prop="targetType">
<el-select v-model="dataForm.targetType" placeholder="请选择时间维度" clearable @change="clearTime">
<!-- <el-option v-for="item in factoryList" :key="item.id" :label="item.name" :value="item.id"> -->
<el-option label="月" :value="0" />
<el-option label="年" :value="1" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="工厂名称" prop="factoryId">
<el-select v-model="dataForm.factoryId" placeholder="请选择工厂名称" multiple="true" clearable>
<el-option v-for="item in factoryList" :key="item.id" :label="item.name" :value="item.id">
</el-option>
</el-select>
<el-form-item v-show="dataForm.targetType !== 1" label="时间" prop="reportTime">
<el-date-picker v-model="dataForm.reportTime" value-format="yyyy-MM" type="month" placeholder="选择月份">
</el-date-picker>
</el-form-item>
<el-form-item v-show="dataForm.targetType === 1" label="时间" prop="targetYear">
<el-date-picker clearable v-model="dataForm.showYear" value-format="yyyy" type="year" placeholder="开始时间">
</el-date-picker>
</el-form-item>
</el-col>
</el-row>
@@ -44,59 +53,57 @@
</small-title>
<el-row :gutter="24" style="padding: 0 32px;">
<el-col :span="6">
<el-form-item label="芯片产量" prop="factoryId">
<el-input v-model="dataForm.factoryId" placeholder="请输入芯片产量"></el-input>
<el-form-item label="芯片产量" prop="chipYield">
<el-input-number v-model="dataForm.chipYield" :precision="0" controls-position="right" placeholder="请输入芯片产量" style="width: 100%" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="芯片良率" prop="factoryId">
<el-input v-model="dataForm.factoryId" placeholder="请输入芯片良率"></el-input>
<el-form-item label="芯片良率" prop="chipYieldRate">
<el-input-number v-model="dataForm.chipYieldRate" :precision="2" :max="100" controls-position="right" placeholder="请输入芯片良率" style="width: 100%" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="芯片BOM" prop="factoryId">
<el-input v-model="dataForm.factoryId" placeholder="请输入芯片BOM"></el-input>
<el-form-item label="芯片BOM" prop="chipBom">
<el-input-number v-model="dataForm.chipBom" :precision="2" controls-position="right" placeholder="请输入芯片BOM" style="width: 100%" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="芯片总功率" prop="factoryId">
<el-input v-model="dataForm.factoryId" placeholder="请输入芯片总功率"></el-input>
<el-form-item label="芯片总功率" prop="chipTotalPower">
<el-input-number v-model="dataForm.chipTotalPower" :precision="2" controls-position="right" placeholder="请输入芯片总功率" style="width: 100%" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="24" style="padding: 0 32px;">
<el-col :span="6">
<el-form-item label="FTO投入量" prop="factoryId">
<el-input v-model="dataForm.factoryId" placeholder="请输入FTO投入量"></el-input>
<el-form-item label="FTO投入量" prop="ftoInput">
<el-input-number v-model="dataForm.ftoInput" :precision="0" controls-position="right" placeholder="请输入FTO投入量" style="width: 100%" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="CSS稼动率" prop="factoryId">
<el-input v-model="dataForm.factoryId" placeholder="请输入CSS稼动率"></el-input>
<el-form-item label="CSS稼动率" prop="chipCssMarriageRate">
<el-input-number v-model="dataForm.chipCssMarriageRate" :precision="2" controls-position="right" placeholder="请输入CSS稼动率" style="width: 100%" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="芯片段OEE" prop="factoryId">
<el-input v-model="dataForm.factoryId" placeholder="请输入芯片段OEE"></el-input>
<el-form-item label="芯片段OEE" prop="chipOee">
<el-input-number v-model="dataForm.chipOee" :precision="2" controls-position="right" placeholder="请输入芯片段OEE" style="width: 100%" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="芯片平均功率" prop="factoryId">
<el-input v-model="dataForm.factoryId" placeholder="请输入芯片平均功率"></el-input>
<el-form-item label="芯片平均功率" prop="chipAveragePower">
<el-input-number v-model="dataForm.chipAveragePower" :precision="2" controls-position="right" placeholder="请输入芯片平均功率" style="width: 100%" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="24" style="padding: 0 32px;">
<el-col :span="6">
<el-form-item label="芯片人均产量" prop="factoryId">
<el-input v-model="dataForm.factoryId" placeholder="请输入芯片人均产量"></el-input>
<el-form-item label="芯片人均产量" prop="chipAnnualAverageProduction">
<el-input-number v-model="dataForm.chipAnnualAverageProduction" :precision="2" controls-position="right" placeholder="请输入芯片人均产量" style="width: 100%" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="芯片人均产量" prop="factoryId">
<el-input v-model="dataForm.factoryId" placeholder="请输入芯片人均产量"></el-input>
<el-form-item label="芯片产能利用率" prop="chipCapacityUtilizationRate">
<el-input-number v-model="dataForm.chipCapacityUtilizationRate" :precision="2" controls-position="right" placeholder="请输入芯片产能利用率" style="width: 100%" />
</el-form-item>
</el-col>
</el-row>
@@ -106,45 +113,45 @@
</small-title>
<el-row :gutter="24" style="padding: 0 32px;">
<el-col :span="6">
<el-form-item label="封装BOM" prop="factoryId">
<el-input v-model="dataForm.factoryId" placeholder="请输入封装BOM"></el-input>
<el-form-item label="封装BOM" prop="componentBom">
<el-input-number v-model="dataForm.componentBom" :precision="2" controls-position="right" placeholder="请输入封装BOM" style="width: 100%" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="封装线OEE" prop="factoryId">
<el-input v-model="dataForm.factoryId" placeholder="请输入封装线OEE"></el-input>
<el-form-item label="封装线OEE" prop="componentOee">
<el-input-number v-model="dataForm.componentOee" :precision="2" controls-position="right" placeholder="请输入封装线OEE" style="width: 100%" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="标准组件良率" prop="factoryId">
<el-input v-model="dataForm.factoryId" placeholder="请输入标准组件良率"></el-input>
<el-form-item label="标准组件良率" prop="componentYieldRate">
<el-input-number v-model="dataForm.componentYieldRate" :precision="2" controls-position="right" placeholder="请输入标准组件良率" style="width: 100%" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="标准组件良率" prop="factoryId">
<el-input v-model="dataForm.factoryId" placeholder="请输入标准组件良率"></el-input>
<el-form-item label="标准组件产量" prop="componentYield">
<el-input-number v-model="dataForm.componentYield" :precision="0" controls-position="right" placeholder="请输入标准组件产量" style="width: 100%" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="24" style="padding: 0 32px;">
<el-col :span="6">
<el-form-item label="标准组件总功率" prop="factoryId">
<el-input v-model="dataForm.factoryId" placeholder="请输入标准组件总功率"></el-input>
<el-form-item label="标准组件总功率" prop="componentTotalPower">
<el-input-number v-model="dataForm.componentTotalPower" :precision="2" controls-position="right" placeholder="请输入标准组件总功率" style="width: 100%" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="标准组件总功率" prop="factoryId">
<el-input v-model="dataForm.factoryId" placeholder="请输入标准组件总功率"></el-input>
<el-form-item label="封装产能利用率" prop="componentCapacityUtilizationRate">
<el-input-number v-model="dataForm.componentCapacityUtilizationRate" :precision="2" controls-position="right" placeholder="请输入封装产能利用率" style="width: 100%" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="标准组件人均产量" prop="factoryId">
<el-input v-model="dataForm.factoryId" placeholder="请输入标准组件人均产量"></el-input>
<el-form-item label="标准组件人均产量" prop="componentAnnualAverageProduction">
<el-input-number v-model="dataForm.componentAnnualAverageProduction" :precision="2" controls-position="right" placeholder="请输入标准组件人均产量" style="width: 100%" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="标准组件平均功率" prop="factoryId">
<el-input v-model="dataForm.factoryId" placeholder="请输入标准组件平均功率"></el-input>
<el-form-item label="标准组件平均功率" prop="componentAveragePower">
<el-input-number v-model="dataForm.componentAveragePower" :precision="2" controls-position="right" placeholder="请输入标准组件平均功率" style="width: 100%" />
</el-form-item>
</el-col>
</el-row>
@@ -155,47 +162,47 @@
</small-title>
<el-row :gutter="24" style="padding: 0 32px;">
<el-col :span="6">
<el-form-item label="产品产量" prop="factoryId">
<el-input v-model="dataForm.factoryId" placeholder="请输入产品产量"></el-input>
<el-form-item label="产品产量" prop="bipvProductOutput">
<el-input-number v-model="dataForm.bipvProductOutput" :precision="0" controls-position="right" placeholder="请输入产品产量" style="width: 100%" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="人均产量" prop="factoryId">
<el-input v-model="dataForm.factoryId" placeholder="请输入人均产量"></el-input>
<el-form-item label="人均产量" prop="bipvAnnualAverageProduction">
<el-input-number v-model="dataForm.bipvAnnualAverageProduction" :precision="2" controls-position="right" placeholder="请输入人均产量" style="width: 100%" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="芯片使用量" prop="factoryId">
<el-input v-model="dataForm.factoryId" placeholder="请输入芯片使用量"></el-input>
<el-form-item label="芯片使用量" prop="bipvChipUsage">
<el-input-number v-model="dataForm.bipvChipUsage" :precision="0" controls-position="right" placeholder="请输入芯片使用量" style="width: 100%" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="芯片利用率" prop="factoryId">
<el-input v-model="dataForm.factoryId" placeholder="请输入芯片利用率"></el-input>
<el-form-item label="芯片利用率" prop="bipvChipUtilizationRate">
<el-input-number v-model="dataForm.bipvChipUtilizationRate" :precision="2" controls-position="right" placeholder="请输入芯片利用率" style="width: 100%" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="24" style="padding: 0 32px;">
<el-col :span="6">
<el-form-item label="内部材料成本" prop="factoryId">
<el-input v-model="dataForm.factoryId" placeholder="请输入内部材料成本"></el-input>
<el-form-item label="内部材料成本" prop="bipvInsideMaterialCost">
<el-input-number v-model="dataForm.bipvInsideMaterialCost" :precision="2" controls-position="right" placeholder="请输入内部材料成本" style="width: 100%" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="OEM及委外材料成本" prop="factoryId">
<el-input v-model="dataForm.factoryId" placeholder="请输入OEM及委外材料成本"></el-input>
<el-form-item label="OEM及委外材料成本" prop="bipvOeeMaterialCost">
<el-input-number v-model="dataForm.bipvOeeMaterialCost" :precision="2" controls-position="right" placeholder="请输入OEM及委外材料成本" style="width: 100%" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="综合材料成本" prop="factoryId">
<el-input v-model="dataForm.factoryId" placeholder="请输入综合材料成本"></el-input>
<el-form-item label="综合材料成本" prop="bipvComprehensiveMaterialCost">
<el-input-number v-model="dataForm.bipvComprehensiveMaterialCost" :precision="2" controls-position="right" placeholder="请输入综合材料成本" style="width: 100%" />
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
<div class="footer">
<el-button @click="cancelForm"> </el-button>
<el-button @click="visible = false"> </el-button>
<el-button type="primary" @click="handleClose()"> </el-button>
</div>
</el-drawer>
@@ -210,20 +217,25 @@
// } from "@/api/base/qualityScrapLog";
// import { getList, } from "@/api/base/qualityScrapType";
import SmallTitle from './SmallTitle';
import { createProduce, getProduceTargetDetail, updateProduceTarget } from '@/api/produceData';
import { factoryList, tyjxfactoryList, dhgfactoryList } from "@/utils/constants";
export default {
components: {
SmallTitle,
},
// mixins: [basicAdd],
props: {
ftype: {
type: Number,
default: 0
}
},
data() {
return {
urlOptions: {
isGetCode: false,
// codeURL: getCode,
// createURL: createQualityScrapLog,
// updateURL: updateQualityScrapLog,
// infoURL: getQualityScrapLog,
},
factoryList,
dhgfactoryList,
tyjxfactoryList,
lineList: [],
typeList: [],
workOrderList: [],
@@ -239,138 +251,165 @@ export default {
name: '自动',
}
],
factoryList:[],
// factoryList: [
// {
// name: '瑞昌中建材光电材料有限公司',
// id: 0
// },
// {
// name: '邯郸中建材光电材料有限公司',
// id: 1
// },
// {
// name: '中建材株洲光电材料有限公司',
// id: 2
// },
// {
// name: '佳木斯中建材光电材料有限公司',
// id: 3
// },
// {
// name: '成都中建材光电材料有限公司',
// id: 4
// },
// {
// name: '凯盛光伏材料有限公司',
// id: 5
// },
// {
// name: '蚌埠兴科玻璃有限公司',
// id: 6
// }
// ],
sectionList: [],
visible: false,
dataForm: {
factoryType: 0,
id: undefined,
logTime: undefined,
source: 1,
detId: undefined,
workOrderId: null,
teamId: undefined,
num: undefined,
lineId: undefined,
description: undefined,
// description: undefined,
remark: undefined,
reportTime: undefined, // 月时间
factory: undefined,
targetType: undefined,
targetYear: undefined,
showYear: undefined,
targetMonth: undefined,
chipYield: undefined,
chipYieldRate: undefined,
chipBom: undefined,
chipTotalPower: undefined,
ftoInput: undefined,
chipCssMarriageRate: undefined,
chipOee: undefined,
chipAveragePower: undefined,
chipAnnualAverageProduction: undefined,
chipCapacityUtilizationRate: undefined,
componentBom: undefined,
componentOee: undefined,
componentYieldRate: undefined,
componentYield: undefined,
componentTotalPower: undefined,
componentCapacityUtilizationRate: undefined,
componentAnnualAverageProduction: undefined,
componentAveragePower: undefined,
bipvProductOutput: undefined,
bipvAnnualAverageProduction: undefined,
bipvChipUsage: undefined,
bipvChipUtilizationRate: undefined,
bipvInsideMaterialCost: undefined,
bipvOeeMaterialCost: undefined,
bipvComprehensiveMaterialCost: undefined
},
// materialList: [],
dataRule: {
// materialId: [{ required: true, message: "", trigger: "blur" }],
workOrderId: [{ required: true, message: "工单号不能为空", trigger: "change" }],
num: [{ required: true, message: "数量不能为空", trigger: "blur" }],
detId: [{ required: true, message: "报废原因不能为空", trigger: "change" }],
// workOrderId: [{ required: true, message: "工单号不能为空", trigger: "change" }],
// num: [{ required: true, message: "数量不能为空", trigger: "blur" }],
// detId: [{ required: true, message: "报废原因不能为空", trigger: "change" }],
logTime: [{ required: true, message: "报废时间不能为空", trigger: "change" }],
// logTime: [{ required: true, message: "报废时间不能为空", trigger: "change" }],
}
};
},
mounted() {
this.getDict()
console.log('我看看', this.dataForm)
this.dataForm.factoryType = this.ftype
// this.getCurrentTime()
},
methods: {
init() {
formClear() {
if (this.$refs.dataForm !== undefined) {
this.$refs.dataForm.resetFields()
}
},
clearTime() {
this.dataForm.targetYear = undefined
this.dataForm.targetMonth = undefined
},
handleClose() {
// 新增
if (this.dataForm.targetType === 0) {
const timeArray = this.dataForm.reportTime.split('-')
this.dataForm.targetYear = Number(timeArray[0])
this.dataForm.targetMonth = Number(timeArray[1])
}
if (this.dataForm.targetType === 1) {
this.dataForm.targetYear = Number(this.dataForm.showYear)
}
// if (this.dataForm.factory === 5) {
// this.dataForm.factoryType = 1
// } else {
// this.dataForm.factoryType = 0
// }
if (this.dataForm.id) {
// 修改
updateProduceTarget({
...this.dataForm,
showYear: undefined,
reportTime: undefined
}).then(res => {
if (res.code === 0) {
this.$message.success('修改成功!')
this.visible = false
this.$emit('refreshDataList')
}
})
} else {
// 新增
createProduce({
...this.dataForm,
showYear: undefined,
reportTime: undefined
}).then(res => {
if (res.code === 0) {
this.$message.success('新增成功!')
this.visible = false
this.$emit('refreshDataList')
}
})
}
},
init(id) {
this.dataForm.id = id || undefined
this.visible = true
},
// getCurrentTime() {
// // new Date().Format("yyyy-MM-dd HH:mm:ss")
// this.dataForm.logTime = new Date()
// // this.dataForm.logTime = year + "-" + month + "-" + day;
// console.log(this.dataForm.logTime);
// },
async getDict() {
// // 物料列表
// const res = await getList()
// this.typeList = res.data
// getWorkOrderList().then((res) => {
// console.log(res);
// // console.log(response);
// this.workOrderList = res.data.map((item) => {
// return {
// name: item.name,
// id: item.id
// }
// })
// // console.log(this.formConfig[0].selectOptions);
// // this.listQuery.total = response.data.total;
// })
// getLineList().then((res) => {
// console.log(res);
// // console.log(response);
// this.lineList = res.data.map((item) => {
// return {
// name: item.name,
// id: item.id
// }
// })
// // console.log(this.formConfig[0].selectOptions);
// // this.listQuery.total = response.data.total;
// })
// getDetList().then((res) => {
// console.log(res);
// // console.log(response);
// this.detList = res.data.map((item) => {
// return {
// name: item.content,
// id: item.id
// }
// })
// // console.log(this.formConfig[0].selectOptions);
// // this.listQuery.total = response.data.total;
// })
// getTeamList().then((res) => {
// console.log(res);
// // console.log(response);
// this.teamList = res.data.map((item) => {
// return {
// name: item.name,
// id: item.id
// }
// })
// // console.log(this.formConfig[0].selectOptions);
// // this.listQuery.total = response.data.total;
// })
// },
// async getWorksectionById(lineId) {
// if (lineId) {
// const { code, data } = await this.$axios({
// url: '/base/core-workshop-section/listByParentId',
// method: 'get',
// params: {
// id: lineId,
// },
// });
// if (code == 0) {
// console.log(data)
// this.sectionList = data.map((item) => {
// return {
// name: item.name,
// id: item.id,
// };
// });
// }
// } else {
// this.$axios({
// url: '/base/core-workshop-section/listAll',
// method: 'get',
// // params: {
// // id: lineId,
// // },
// }).then((res) => {
// // console.log(data)
// this.sectionList = res.data.map((item) => {
// return {
// name: item.name,
// id: item.id,
// };
// });
// })
// }
},
},
if (this.dataForm.id) {
getProduceTargetDetail(this.dataForm.id).then(res => {
this.dataForm = res.data
if (this.dataForm.targetType === 1) {
if (this.dataForm.targetYear) {
this.$set(this.dataForm, 'showYear', String(this.dataForm.targetYear))
}
}
if (this.dataForm.targetType === 0) {
if (this.dataForm.targetYear && this.dataForm.targetMonth !== null) {
if (this.dataForm.targetMonth < 10) {
this.$set(this.dataForm, 'reportTime', String(this.dataForm.targetYear) + '-0' + String(this.dataForm.targetMonth))
} else {
this.$set(this.dataForm, 'reportTime', String(this.dataForm.targetYear) + '-' + String(this.dataForm.targetMonth))
}
}
}
})
}
}
}
};
</script>
<style scoped>