This commit is contained in:
‘937886381’ 2024-09-11 14:26:39 +08:00
parent c847ba1595
commit 9581d91c52
3 changed files with 177 additions and 183 deletions

View File

@ -5,13 +5,10 @@
<el-form-item label="工单名称" prop="name" v-if='!isBind'>
<el-input v-model="form.name"></el-input>
</el-form-item>
<el-form-item label="工单名称" prop="workOrderId" v-if='isBind'>
<el-select v-model="form.workOrderId" placeholder="请选择" style="width: 100%;" filterable @change="getWorkOrderMsg">
<el-option
v-for="item in workOrderList"
:key="item.id"
:label="item.name"
:value="item.id">
<el-form-item label="工单名称" prop="workOrderId" v-if='isBind'>
<el-select v-model="form.workOrderId" placeholder="请选择" style="width: 100%;" filterable
@change="getWorkOrderMsg">
<el-option v-for="item in workOrderList" :key="item.id" :label="item.name" :value="item.id">
</el-option>
</el-select>
</el-form-item>
@ -23,11 +20,8 @@
</el-col>
<el-col :span='6'>
<el-form-item label="产品名称" prop="planProductId">
<el-select v-model="form.planProductId" placeholder="请选择" disabled style="width: 100%;">
<el-option
v-for="item in productList"
:key="item.id"
:label="item.name+' | '+item.specifications"
<el-select v-model="form.planProductId" placeholder="请选择" disabled style="width: 100%;">
<el-option v-for="item in productList" :key="item.id" :label="item.name+' | '+item.specifications"
:value="item.id">
<span style="float: left">{{ item.name }}</span>
<span style="float: right; color: #8492a6; font-size: 13px">{{ item.specifications }}</span>
@ -37,13 +31,8 @@
</el-col>
<el-col :span='6'>
<el-form-item label="计划开始时间">
<el-date-picker
v-model="planStartTime"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
style="width: 100%;"
placeholder="选择日期"
:disabled="isBind">
<el-date-picker v-model="planStartTime" type="datetime" value-format="yyyy-MM-dd HH:mm:ss"
style="width: 100%;" placeholder="选择日期" :disabled="isBind">
</el-date-picker>
</el-form-item>
</el-col>
@ -51,34 +40,27 @@
<el-row :gutter="20">
<el-col :span='6'>
<el-form-item label="计划完成时间">
<el-date-picker
v-model="planFinishTime"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
style="width: 100%;"
placeholder="选择日期"
:disabled="isBind">
<el-date-picker v-model="planFinishTime" type="datetime" value-format="yyyy-MM-dd HH:mm:ss"
style="width: 100%;" placeholder="选择日期" :disabled="isBind">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span='6'>
<el-form-item label="计划投入数量" prop="planAssignQuantity">
<el-input-number v-model="form.planAssignQuantity" :min="0" :max="9999999999999" :disabled="isBind" style="width: 100%;"></el-input-number>
<el-input-number v-model="form.planAssignQuantity" :min="0" :max="9999999999999" :disabled="isBind"
style="width: 100%;"></el-input-number>
</el-form-item>
</el-col>
<el-col :span='6'>
<el-form-item label="计划生产数量" prop="planQuantity">
<el-input-number v-model="form.planQuantity" :min="0" :max="9999999999999" :disabled="isBind" style="width: 100%;"></el-input-number>
<el-input-number v-model="form.planQuantity" :min="0" :max="9999999999999" :disabled="isBind"
style="width: 100%;"></el-input-number>
</el-form-item>
</el-col>
<el-col :span='6'>
<el-form-item label="关联工艺" prop="processFlowId">
<el-select v-model="form.processFlowId" placeholder="请选择" disabled style="width: 100%;">
<el-option
v-for="item in processFlowList"
:key="item.id"
:label="item.name"
:value="item.id">
<el-option v-for="item in processFlowList" :key="item.id" :label="item.name" :value="item.id">
</el-option>
</el-select>
</el-form-item>
@ -96,10 +78,7 @@
<el-col :span='6'>
<el-form-item label="优先级" prop="priority">
<el-select v-model="form.priority" placeholder="请选择" style="width: 100%;" :disabled="isBind">
<el-option
v-for="item in getDictDatas(DICT_TYPE.ORDER_PRIORITY)"
:key="item.value"
:label="item.label"
<el-option v-for="item in getDictDatas(DICT_TYPE.ORDER_PRIORITY)" :key="item.value" :label="item.label"
:value="item.value">
</el-option>
</el-select>
@ -108,11 +87,7 @@
<el-col :span='6'>
<el-form-item label="工单类型" prop="type">
<el-select v-model="form.type" placeholder="请选择" style="width: 100%;" :disabled="isBind">
<el-option
v-for="item in workOrderTypeList"
:key="item.id"
:label="item.name"
:value="item.id">
<el-option v-for="item in workOrderTypeList" :key="item.id" :label="item.name" :value="item.id">
</el-option>
</el-select>
</el-form-item>
@ -120,11 +95,7 @@
<el-col :span='6'>
<el-form-item label="关联产线" prop="productLineId">
<el-select v-model="form.productLineId" placeholder="请选择" multiple style="width: 100%;" :disabled="isBind">
<el-option
v-for="item in productLineList"
:key="item.id"
:label="item.name"
:value="item.id">
<el-option v-for="item in productLineList" :key="item.id" :label="item.name" :value="item.id">
</el-option>
</el-select>
</el-form-item>
@ -136,9 +107,18 @@
<el-input v-model="form.workers" :disabled="isBind"></el-input>
</el-form-item>
</el-col>
<el-col :span='6'>
<el-form-item label="负责部门" prop="deptId">
<el-select v-model="form.deptId" placeholder="请选择关联产线" style="width: 100%;">
<el-option v-for="item in deptList" :key="item.id" :label="item.name" :value="item.id">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span='6'>
<el-form-item label="计划分配订单量" prop="planAssignmentQuantity">
<el-input-number v-model="form.planAssignmentQuantity" :min="0" :max="9999999999999" style="width: 100%;"></el-input-number>
<el-input-number v-model="form.planAssignmentQuantity" :min="0" :max="9999999999999" style="width: 100%;">
</el-input-number>
</el-form-item>
</el-col>
</el-row>
@ -148,6 +128,7 @@
import { getProductAll } from '@/api/base/product'
import { getProcessFlowList, getWorkOrderCode, orderIssue, workOrderList, getWorkOrderById } from '@/api/base/orderManage'
import { getLineAll } from '@/api/base/productionLine'
import { listDept } from '@/api/system/dept';
import moment from 'moment'
export default {
name: 'AddWorkOrder',
@ -162,6 +143,7 @@ export default {
planStartTime: '',
planFinishTime: '',
planAssignQuantity: 0,
deptId:undefined,
planQuantity: 0,
processFlowId: '',
materialMethod: 1,
@ -171,6 +153,7 @@ export default {
workers: '',
planAssignmentQuantity: ''
},
deptList:[],
rules: {
name: [{ required: true, message: "工单名称不能为空", trigger: "blur" }],
planProductId: [{ required: true, message: "产品名称不能为空", trigger: "change" }],
@ -209,6 +192,9 @@ export default {
}
},
getList() {
listDept().then(res => {
this.deptList = res.data || []
})
//
getProductAll().then(res => {
this.productList = res.data || []

View File

@ -13,12 +13,9 @@
</el-col>
<el-col :span='8'>
<el-form-item label="产品名称" prop="planProductId">
<el-select v-model="dataForm.planProductId" placeholder="请选择产品" style="width: 100%;" filterable @change="selectProduct">
<el-option
v-for="item in productList"
:key="item.id"
:label="item.name"
:value="item.id">
<el-select v-model="dataForm.planProductId" placeholder="请选择产品" style="width: 100%;" filterable
@change="selectProduct">
<el-option v-for="item in productList" :key="item.id" :label="item.name" :value="item.id">
</el-option>
</el-select>
</el-form-item>
@ -32,23 +29,15 @@
</el-col>
<el-col :span='8'>
<el-form-item label="计划开始时间">
<el-date-picker
v-model="dataForm.planStartTime"
type="datetime"
value-format="timestamp"
style="width: 100%;"
<el-date-picker v-model="dataForm.planStartTime" type="datetime" value-format="timestamp" style="width: 100%;"
placeholder="请选择计划开始时间">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span='8'>
<el-form-item label="计划完成时间">
<el-date-picker
v-model="dataForm.planFinishTime"
type="datetime"
value-format="timestamp"
style="width: 100%;"
placeholder="请选择计划完成时间">
<el-date-picker v-model="dataForm.planFinishTime" type="datetime" value-format="timestamp"
style="width: 100%;" placeholder="请选择计划完成时间">
</el-date-picker>
</el-form-item>
</el-col>
@ -56,22 +45,21 @@
<el-row :gutter="20">
<el-col :span='8'>
<el-form-item label="计划投入数量" prop="planAssignQuantity">
<el-input-number v-model="dataForm.planAssignQuantity" :min="0" :max="9999999999999" style="width: 100%;" placeholder="请输入计划投入数量"></el-input-number>
<el-input-number v-model="dataForm.planAssignQuantity" :min="0" :max="9999999999999" style="width: 100%;"
placeholder="请输入计划投入数量"></el-input-number>
</el-form-item>
</el-col>
<el-col :span='8'>
<el-form-item label="计划生产数量" prop="planQuantity">
<el-input-number v-model="dataForm.planQuantity" :min="0" :max="9999999999999" style="width: 100%;" placeholder="请输入计划生产数量"></el-input-number>
<el-input-number v-model="dataForm.planQuantity" :min="0" :max="9999999999999" style="width: 100%;"
placeholder="请输入计划生产数量"></el-input-number>
</el-form-item>
</el-col>
<el-col :span='8'>
<el-form-item label="关联工艺" prop="processFlowId">
<el-select v-model="dataForm.processFlowId" placeholder="请选择关联工艺" clearable filterable style="width: 100%;" @change="processFlowIdChange">
<el-option
v-for="item in processFlowList"
:key="item.id"
:label="item.name"
:value="item.id">
<el-select v-model="dataForm.processFlowId" placeholder="请选择关联工艺" clearable filterable style="width: 100%;"
@change="processFlowIdChange">
<el-option v-for="item in processFlowList" :key="item.id" :label="item.name" :value="item.id">
</el-option>
</el-select>
</el-form-item>
@ -84,7 +72,8 @@
<el-radio :label="1">产品基础BOM</el-radio>
<el-radio :label="2">工艺扩展BOM</el-radio>
</el-radio-group> -->
<el-select v-model="dataForm.materialMethod" placeholder="请选择物料计算方式" style="width: 100%;" @change="materialMethodChange">
<el-select v-model="dataForm.materialMethod" placeholder="请选择物料计算方式" style="width: 100%;"
@change="materialMethodChange">
<el-option key="1" label="产品基础BOM" :value="1" />
<el-option key="2" label="工艺扩展BOM" :value="2" />
</el-select>
@ -93,10 +82,7 @@
<el-col :span='8'>
<el-form-item label="优先级" prop="priority">
<el-select v-model="dataForm.priority" placeholder="请选择优先级" style="width: 100%;">
<el-option
v-for="item in getDictDatas(DICT_TYPE.ORDER_PRIORITY)"
:key="item.value"
:label="item.label"
<el-option v-for="item in getDictDatas(DICT_TYPE.ORDER_PRIORITY)" :key="item.value" :label="item.label"
:value="item.value">
</el-option>
</el-select>
@ -105,11 +91,7 @@
<el-col :span='8'>
<el-form-item label="工单类型" prop="type">
<el-select v-model="dataForm.type" placeholder="请选择工单类型" style="width: 100%;">
<el-option
v-for="item in workOrderTypeList"
:key="item.id"
:label="item.name"
:value="item.id">
<el-option v-for="item in workOrderTypeList" :key="item.id" :label="item.name" :value="item.id">
</el-option>
</el-select>
</el-form-item>
@ -119,11 +101,15 @@
<el-col :span='8'>
<el-form-item label="关联产线" prop="productLineIds">
<el-select v-model="dataForm.productLineIds" placeholder="请选择关联产线" multiple style="width: 100%;">
<el-option
v-for="item in productLineList"
:key="item.id"
:label="item.name"
:value="item.id">
<el-option v-for="item in productLineList" :key="item.id" :label="item.name" :value="item.id">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span='8'>
<el-form-item label="负责部门" prop="deptId">
<el-select v-model="dataForm.deptId" placeholder="请选择关联产线" style="width: 100%;">
<el-option v-for="item in deptList" :key="item.id" :label="item.name" :value="item.id">
</el-option>
</el-select>
</el-form-item>
@ -149,7 +135,7 @@ import { getProcessFlowList, workOrderList } from '@/api/base/orderManage'
import { createCoreWO, updateCoreWO, getCode, getCoreWO } from '@/api/base/coreWorkOrder'
import { getLineAll } from '@/api/base/productionLine'
import basicAdd from '../../core/mixins/basic-add';
import { listDept } from '@/api/system/dept';
export default {
name: 'AddWorkOrder',
mixins: [basicAdd],
@ -167,6 +153,7 @@ export default {
workOrderId: '',
name: '',
code: '',
deptId:undefined,
planProductId: '',
specifications: '',
planStartTime: '',
@ -192,6 +179,7 @@ export default {
productList: [],
processFlowList: [],
productLineList: [],
deptList:[],
workOrderTypeList: [
{id: 1,name:'普通'},
{id: 2, name:'特殊'}
@ -296,6 +284,9 @@ export default {
getLineAll().then(res => {
this.productLineList = res.data || []
})
listDept().then(res => {
this.deptList = res.data || []
})
//
getProcessFlowList().then(res => {
this.processFlowList = res.data || []

View File

@ -60,68 +60,9 @@ import {
getConOrderList,
getCoreWOList
} from '@/api/base/coreWorkOrder';
import { listDept } from '@/api/system/dept';
const tableProps = [
{
prop: 'createTime',
label: '创建时间',
filter: parseTime,
minWidth: 150,
showOverflowtooltip: true
},
{
prop: 'name',
label: '工单名称',
minWidth: 120,
showOverflowtooltip: true
},
{
prop: 'code',
label: '工单编码',
minWidth: 150,
showOverflowtooltip: true
},
{
prop: 'workers',
label: '负责人',
minWidth: 100,
showOverflowtooltip: true
},
{
prop: 'priority',
label: '优先级',
filter: (val) => ['', '低', '正常', '高'][val]
},
{
prop: 'triggerOrigin',
label: '来源',
filter: (val) => ['', 'MES-手动', 'MES-订单下发', 'ERP'][val]
},
{
prop: 'status',
label: '工单状态',
filter: (val) => ['', '等待', '激活', '暂停', '完成', '', '', '', '', '作废'][val]
},
{
prop: 'planFinishTime',
label: '计划完成时间',
filter: parseTime,
minWidth: 150,
showOverflowtooltip: true
},
{
prop: 'planQuantity',
label: '计划生产数量',
minWidth: 120,
},
{
prop: 'actualQuantity',
label: '实际生产数量',
minWidth: 120,
}
];
export default {
mixins: [basicPage],
components: {
@ -134,37 +75,38 @@ export default {
urlOptions: {
getDataListURL: getCoreWOPage,
deleteURL: deleteCoreWO
},
detailVisible: false,
},
departments:[],
detailVisible: false,
departmentsLoaded: false,
materialVisible: false,
allocationVisible: false,
tableProps,
tableBtn: [
this.$auth.hasPermi(`base:core-work-order:material`)
? {
type: 'material',
btnName: '原料信息',
}
: undefined,
{
type: 'active',
btnName: '激活',
showParam: {
type: '|',
data: [
{
name: 'status',
type: 'equal',
value: 1
},
{
name: 'status',
type: 'equal',
value: 3
}
]
}
},
// this.$auth.hasPermi(`base:core-work-order:material`)
// ? {
// type: 'material',
// btnName: '',
// }
// : undefined,
// {
// type: 'active',
// btnName: '',
// showParam: {
// type: '|',
// data: [
// {
// name: 'status',
// type: 'equal',
// value: 1
// },
// {
// name: 'status',
// type: 'equal',
// value: 3
// }
// ]
// }
// },
{
type: 'pause',
btnName: '暂停',
@ -323,13 +265,88 @@ export default {
},
],
};
},
mounted() {
},
computed: {
tableProps() {
return [
{
prop: 'createTime',
label: '创建时间',
filter: parseTime,
minWidth: 150,
showOverflowtooltip: true
},
{
prop: 'name',
label: '工单名称',
minWidth: 120,
showOverflowtooltip: true
},
{
prop: 'code',
label: '工单编码',
minWidth: 150,
showOverflowtooltip: true
},
{
prop: 'deptId',
label: '负责部门',
minWidth: 100,
showOverflowtooltip: true,
filter: (val) => {
if (this.departmentsLoaded) {
const department = this.departments.find((dept) => dept.id === val);
return department ? department.name : '';
} else {
return '';
}
},
},
{
prop: 'priority',
label: '优先级',
filter: (val) => ['', '低', '正常', '高'][val]
},
{
prop: 'triggerOrigin',
label: '来源',
filter: (val) => ['', 'MES-手动', 'MES-订单下发', 'ERP'][val]
},
{
prop: 'status',
label: '工单状态',
filter: (val) => ['', '等待', '激活', '暂停', '完成', '', '', '', '', '作废'][val]
},
{
prop: 'planFinishTime',
label: '计划完成时间',
filter: parseTime,
minWidth: 150,
showOverflowtooltip: true
},
{
prop: 'planQuantity',
label: '计划生产数量',
minWidth: 120,
},
{
prop: 'actualQuantity',
label: '实际生产数量',
minWidth: 120,
}
];
}
},
mounted() {
console.log(this.$route.query.workOrderName)
if (this.$route.query.workOrderName) {
this.listQuery.name = this.$route.query.workOrderName;
this.formConfig[0].defaultSelect = this.$route.query.workOrderName;
}
}
listDept().then(res => {
this.departments = res.data || []
this.departmentsLoaded = true;
})
// this.getWorkOrder()
this.getDataList()
},