mes初始化

This commit is contained in:
qianhao.xu 2023-11-13 11:23:23 +08:00
parent 348f53a513
commit eb01579727
5 changed files with 6 additions and 628 deletions

Binary file not shown.

View File

@ -1,4 +1,4 @@
 __ __ ______ _____
----------苏州道安自动化-------------
| \/ | ____|/ ____|
| \ / | |__ | (___
| |\/| | __| \___ \

View File

@ -1,96 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using SqlSugar;
namespace ZR.Model.mes.md
{
/// <summary>
/// 物料清单
///</summary>
[SugarTable("md_bom")]
public class MdBom
{
/// <summary>
/// 流水号
///</summary>
[SugarColumn(ColumnName = "id", IsPrimaryKey = true, IsIdentity = true)]
public int Id { get; set; }
/// <summary>
/// 父产品id
///</summary>
[SugarColumn(ColumnName = "parent_product_id")]
public int? ParentProductId { get; set; }
/// <summary>
/// 产品编号
///</summary>
[SugarColumn(ColumnName = "product_code")]
public string ProductCode { get; set; }
/// <summary>
/// 产品名称
///</summary>
[SugarColumn(ColumnName = "product_name")]
public string ProductName { get; set; }
/// <summary>
/// 零件类型
///</summary>
[SugarColumn(ColumnName = "product_type")]
public string ProductType { get; set; }
/// <summary>
/// 安全库存
///</summary>
[SugarColumn(ColumnName = "safety_stock")]
public int? SafetyStock { get; set; }
/// <summary>
/// 位置/来源
///</summary>
[SugarColumn(ColumnName = "product_position")]
public string ProductPosition { get; set; }
/// <summary>
/// 需求数量
///</summary>
[SugarColumn(ColumnName = "requireNum")]
public int? RequireNum { get; set; }
/// <summary>
/// 单位id
///</summary>
[SugarColumn(ColumnName = "unit_id")]
public int? UnitId { get; set; }
/// <summary>
/// 租户号
///</summary>
[SugarColumn(ColumnName = "TENANT_ID")]
public string TenantId { get; set; }
/// <summary>
/// 乐观锁
///</summary>
[SugarColumn(ColumnName = "REVISION")]
public int? Revision { get; set; }
/// <summary>
/// 创建人
///</summary>
[SugarColumn(ColumnName = "CREATED_BY")]
public string CreatedBy { get; set; }
/// <summary>
/// 创建时间
///</summary>
[SugarColumn(ColumnName = "CREATED_TIME")]
public DateTime? CreatedTime { get; set; }
/// <summary>
/// 更新人
///</summary>
[SugarColumn(ColumnName = "UPDATED_BY")]
public string UpdatedBy { get; set; }
/// <summary>
/// 更新时间
///</summary>
[SugarColumn(ColumnName = "UPDATED_TIME")]
public DateTime? UpdatedTime { get; set; }
[SqlSugar.SugarColumn(IsIgnore = true)]
public List<MdBom> Child { get; set; }
}
}

View File

@ -1,300 +0,0 @@
<template>
<div class="app-container">
<!-- 搜索部分 -->
<div>
<el-form :model="search" inline v-show="search.showSearch">
<el-form-item label="产线编码 ">
<el-input v-model="search.lineCode" placeholder="输入产线编号"></el-input>
</el-form-item>
<el-form-item label="产线名称 ">
<el-input v-model="search.lineName" placeholder="输入产线名称"></el-input>
</el-form-item>
<el-button icon="el-icon-search" circle @click="getList"></el-button>
</el-form>
</div>
<!-- 按钮排 -->
<div>
<el-row :gutter="2">
<el-col :span="1.5">
<el-button type="primary" size="small" @click="addItem">增加</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="warning" size="small" @click="updataItem(true)" :disabled="updateDisable">修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="danger" size="small" @click="deleteItem(true)" :disabled="delDisable">删除</el-button>
</el-col>
<right-toolbar :showSearch.sync="search.showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-row>
<pagination
:v-show="true"
:total="pagination.total"
:page.sync="pagination.pageNum"
:limit.sync="pagination.pageSize"
@pagination="getList"
/>
</el-row>
</div>
<div>
<vxe-table
border
align="center"
:print-config="{}"
ref="xTable1"
:data="table.worklineList"
:loading="table.loading"
@checkbox-change="selectChangeEvent"
:row-config="{ isHover: true }"
>
<vxe-column type="checkbox" width="60"></vxe-column>
<vxe-column field="lineCode" title="产线编码" width="80"></vxe-column>
<vxe-column field="lineName" title="产线名称" sortable></vxe-column>
<vxe-colgroup title="所属车间">
<vxe-column field="workshop.workshopId" title="车间id" width="80"></vxe-column>
<vxe-column field="workshop.workshopName" title="车间名称"></vxe-column>
</vxe-colgroup>
<vxe-column title="操作" show-overflow>
<template slot-scope="scope">
<el-button size="mini" type="text" icon="el-icon-edit" @click="updataItem(false, scope.row)">修改</el-button>
<el-button size="mini" type="text" icon="el-icon-delete" @click="deleteItem(false, scope.row)" class="delred">删除</el-button>
</template>
</vxe-column>
</vxe-table>
<vxe-pager
background
:current-page.sync="pagination.pageNum"
:page-size.sync="pagination.pageSize"
:total="pagination.total"
:layouts="['PrevJump', 'PrevPage', 'JumpNumber', 'NextPage', 'NextJump', 'Sizes', 'FullJump', 'Total']"
@page-change="getList"
>
</vxe-pager>
</div>
<!-- 弹窗-- 修改和删除 -->
<el-dialog :title="DMLdialog.title" :visible.sync="DMLdialog.visiable" width="600px" append-to-body>
<el-form ref="DMLdialog" :model="DMLdialog.form" label-width="150px" label-position="left" :rules="DMLdialog.rules">
<el-form-item label="产线编码 " prop="lineCode">
<el-input v-model="DMLdialog.form.lineCode" placeholder="输入产线编码"></el-input>
</el-form-item>
<el-form-item label="产线名称 " prop="lineName">
<el-input v-model="DMLdialog.form.lineName" placeholder="输入产线名称"></el-input>
</el-form-item>
<el-form-item label="车间 " prop="pkWorkshopName">
<el-select v-model="DMLdialog.form.fkWorkShopId" placeholder="请选择车间">
<el-option
v-for="item in DMLdialog.workshopOption"
:key="item.id"
:label="item.workshopId + '|' + item.workshopName"
:value="item.id"
>
</el-option>
</el-select>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { getWorklineList, insertworkline, updateWorkline, delWorkline, getWorkshopList } from '@/api/basisManagement/workLine.js'
export default {
name: 'workLine',
data() {
return {
//
search: {
lineCode: '',
lineName: '',
pkWorkshopName: '',
showSearch: true,
},
//
table: {
loading: true,
worklineList: [],
},
//
pagination: {
total: 0,
pageNum: 1,
pageSize: 10,
},
//
DMLdialog: {
title: '',
visiable: false,
form: {
lineCode: '',
lineName: '',
fkWorkShopId: '',
},
workshopOption: [],
rules: {
lineCode: [{ required: true, message: '产线编码不能为空', trigger: 'blur' }],
lineName: [{ required: true, message: '产线名称不能为空', trigger: 'blur' }],
},
},
//
updateDisable: true,
//
delDisable: true,
flag: 'update', //
}
},
created() {
this.getList()
this.getWorkshopOption()
},
methods: {
//
getList() {
const query = { ...this.search, ...this.pagination }
delete query.showSearch
getWorklineList(query).then((res) => {
if (res.code == 200) {
this.table.loading = false
this.pagination.total = res.data.item1
this.table.worklineList = res.data.item2
}
})
},
//
getWorkshopOption() {
getWorkshopList().then((res) => {
if (res.code == 200) this.DMLdialog.workshopOption = res.data
})
},
//
handleUpdate(row) {},
//
handleDelete(row) {},
selectChangeEvent({ checked }) {
const records = this.$refs.xTable1.getCheckboxRecords()
if (records.length == 1) {
this.updateDisable = false
} else {
this.updateDisable = true
}
if (records.length > 0) {
this.delDisable = false
} else {
this.delDisable = true
}
},
//
addItem() {
this.DMLdialog.title = '新增'
this.DMLdialog.visiable = true
this.flag = 'add'
},
//
submitForm() {
if (this.flag == 'update') {
updateWorkline(this.DMLdialog.form).then((res) => {
if (res.code == 200 && res.data == 1) {
this.$notify.success('修改成功')
this.getList()
this.DMLdialog.visiable = false
this.reset()
}
})
} else if (this.flag == 'add') {
this.$refs['DMLdialog'].validate((valid) => {
if (valid) {
insertworkline(this.DMLdialog.form).then((res) => {
if (res.code == 200) {
this.getList()
this.DMLdialog.visiable = false
this.reset()
}
})
}
})
}
},
cancel() {
this.DMLdialog.visiable = false
this.reset()
},
reset() {
this.DMLdialog.form = {
lineCode: '',
lineName: '',
}
this.DMLdialog.form.reset()
},
//
updataItem(flag, row) {
this.DMLdialog.title = '修改'
this.DMLdialog.visiable = true
this.flag = 'update'
if (!flag) {
this.DMLdialog.form.lineCode = row.lineCode
this.DMLdialog.form.lineName = row.lineName
this.DMLdialog.form.id = row.id
this.DMLdialog.form.fkWorkShopId = row.fkWorkShopId
} else {
const records = this.$refs.xTable1.getCheckboxRecords()
if (records.length == 1) {
this.DMLdialog.form.lineCode = records[0].lineCode
this.DMLdialog.form.lineName = records[0].lineName
this.DMLdialog.form.id = records[0].id
this.DMLdialog.form.fkWorkShopId =records[0].fkWorkShopId
}
}
},
//
deleteItem(flag, row) {
if (!flag) {
this.$modal
.confirm('是否确认删除产线名称为"' + row.lineName + '"的数据项?')
.then(function () {
const array = []
array.push(row.id)
return delWorkline(array)
})
.then(() => {
this.getList()
this.$modal.msgSuccess('删除成功')
})
.catch(() => {})
} else {
const records = this.$refs.xTable1.getCheckboxRecords()
if (records.length > 0) {
this.$modal
.confirm('是否确认删除产线名称为"' + records.map((it) => it.lineName) + '"的数据项?')
.then(function () {
return delWorkline(records.map((it) => it.id))
})
.then(() => {
this.getList()
this.$modal.msgSuccess('删除成功')
})
.catch(() => {})
}
}
},
},
}
</script>
<style lang="scss" scoped>
.delred {
::v-deep .el-icon-delete {
color: #f56c6c;
}
::v-deep span {
color: #f56c6c;
}
}
</style>

View File

@ -1,243 +1,17 @@
<template>
<div class="app-container">
<!-- 搜索部分 -->
<div>
<el-form :model="search" inline>
<!-- <el-form-item label="年">
<el-input v-model="search.year" placeholder="输入年份"></el-input>
</el-form-item> -->
<el-form-item label="周">
<el-input v-model="search.week" placeholder="输入周"></el-input>
</el-form-item>
<el-form-item label="日期">
<el-input v-model="search.date" placeholder="输入日期"></el-input>
</el-form-item>
<el-form-item label="上线时间">
<el-input v-model="search.time" placeholder="输入时间"></el-input>
</el-form-item>
<el-form-item label="班组">
<el-input v-model="search.teams" placeholder="输入班组"></el-input>
</el-form-item>
<el-form-item label="工单">
<el-input v-model="search.workorder" placeholder="输入工单"></el-input>
</el-form-item>
<el-button type="primary" icon="el-icon-search" @click="getList">搜索</el-button>
</el-form>
</div>
<h3>油漆车间生产序列计划第13周</h3>
<!-- 按钮排 -->
<!-- 周一至周日 -->
<div>
<el-row type="flex" justify="space-between">
<el-col :span="12">
<el-row :gutter="2">
<el-col :span="6">
<el-button type="primary" size="small" @click="addItem">批量导入生产计划</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="danger" size="small" @click="addItem">紧急插工单</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="warning" size="small" @click="updataItem(true)">修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="warning" size="small" @click="deleteItem(true)">删除</el-button>
</el-col>
</el-row>
</el-col>
<div class="app-container">
<el-col :span="12">
<el-button-group style="float: right">
<el-button type="primary" size="big">全部</el-button>
<el-button type="info" size="big">周一</el-button>
<el-button type="info" size="big">周二</el-button>
<el-button type="info" size="big">周三</el-button>
<el-button type="info" size="big">周四</el-button>
<el-button type="info" size="big">周五</el-button>
<el-button type="info" size="big">周六</el-button>
<el-button type="info" size="big">周日</el-button>
</el-button-group>
</el-col>
</el-row>
</div>
<!-- 表格 -->
<vxe-table
border
:column-config="{ useKey: true }"
:row-config="{ useKey: true }"
height="400"
:data="tableData"
:cell-class-name="cellClassName"
>
<vxe-column type="seq" width="60"></vxe-column>
<vxe-column field="Date" title="日期"></vxe-column>
<vxe-column field="shift" title="班别"></vxe-column>
<vxe-column field="team" title="班组"></vxe-column>
<vxe-column field="round" title="圈数"></vxe-column>
<vxe-column field="online_time" title="上线时间"></vxe-column>
<vxe-column field="work_order" title="工单" :formatter="formatworkOrder" type="html" width="90"></vxe-column>
<vxe-column field="vehicle_NO" title="小车号"></vxe-column>
<vxe-column field="part_SN" title="简码"></vxe-column>
<vxe-column field="part_NO" title="零件号" width="100" :formatter="formatPartNo" type="html"></vxe-column>
<vxe-column field="part_name" title="零件名称" width="120" :formatter="formatPartName" type="html"> </vxe-column>
<vxe-column field="paintCode" title="颜色代号"></vxe-column>
<vxe-column field="ProgramCode" title="程序号"></vxe-column>
<vxe-column field="QuantityPerRack" title="每车件数"></vxe-column>
<vxe-column field="RackQuantity" title="小车数量"></vxe-column>
<vxe-column field="ShareRack" title="共用小车"></vxe-column>
<vxe-column field="ProductionQuantity" title="生产数量"></vxe-column>
<vxe-column field="Remark" title="备注"></vxe-column>
</vxe-table>
</div>
</template>
<script>
export default {
name: 'workorder',
name:"workplan"
data() {
return {
search: {
date: '',
time: '',
teams: '',
workOrder: '',
},
tableData: [
{
Date: '2016/3/22',
shift: '夜班',
team: 'A',
round: '08',
online_time: '03/23 00:09:45',
work_order: 'W0234',
vehicle_NO: '059-063',
part_SN: '177',
part_NO: '300504103',
part_name: 'SGM201左外镜副镜壳银河灰',
paintCode: '1551',
ProgramCode: '0041',
QuantityPerRack: '20',
RackQuantity: '6',
ShareRack: '85',
ProductionQuantity: '85',
Remark: '-',
},
{
Date: '2016/3/22',
shift: '白班',
team: 'A',
round: '08',
online_time: '03/23 00:09:45',
work_order: 'W0234',
vehicle_NO: '059-063',
part_SN: '177',
part_NO: '300504103',
part_name: 'SGM201左外镜副镜壳银河灰',
paintCode: '1551',
ProgramCode: '0041',
QuantityPerRack: '20',
RackQuantity: '6',
ShareRack: '85',
ProductionQuantity: '85',
Remark: '-',
},
{
Date: '2016/3/22',
shift: '夜班',
team: 'A',
round: '08',
online_time: '03/23 00:09:45',
work_order: 'W0234',
vehicle_NO: '059-063',
part_SN: '177',
part_NO: '300504103',
part_name: 'SGM201左外镜副镜壳银河灰',
paintCode: '1551',
ProgramCode: '0041',
QuantityPerRack: '20',
RackQuantity: '6',
ShareRack: '85',
ProductionQuantity: '85',
Remark: '-',
},
{
Date: '2016/3/22',
shift: '白班',
team: 'A',
round: '08',
online_time: '03/23 00:09:45',
work_order: 'W0234',
vehicle_NO: '059-063',
part_SN: '177',
part_NO: '300504103',
part_name: 'SGM201左外镜副镜壳银河灰',
paintCode: '1551',
ProgramCode: '0041',
QuantityPerRack: '20',
RackQuantity: '6',
ShareRack: '85',
ProductionQuantity: '85',
Remark: '-',
},
{
Date: '2016/3/22',
shift: '白班',
team: 'A',
round: '08',
online_time: '03/23 00:09:45',
work_order: 'W0234',
vehicle_NO: '059-063',
part_SN: '177',
part_NO: '300504103',
part_name: 'SGM201左外镜副镜壳银河灰',
paintCode: '1551',
ProgramCode: '0041',
QuantityPerRack: '20',
RackQuantity: '6',
ShareRack: '85',
ProductionQuantity: '85',
Remark: '-',
},
],
}
},
mounted() {
this.getList()
},
methods: {
getList() {},
addItem() {},
updataItem() {},
deleteItem() {},
formatworkOrder({ cellValue }) {
return `<span style="color:blue;font-weight: bold"> ${cellValue} </span>`
},
formatPartNo({ cellValue }) {
return `<span style="color:green;font-weight: bold"> ${cellValue} </span>`
},
formatPartName({ cellValue }) {
return `<span style="color:green;font-weight: bold"> ${cellValue} </span>`
},
cellClassName({ row, column }) {
if (column.field === 'team') {
if (row.team == '夜班') {
return 'col-black'
}
}
return null
},
},
}
</script>
<style lang="scss" scoped>
h3 {
text-align: center;
}
::v-deep .el-button-group {
margin-left: 10px;
}
</style>
</style>