Merge remote-tracking branch 'origin/master'

master
夜笙歌 9 months ago
commit 9b341cb0b0

@ -106,6 +106,24 @@ public class MesProductOrderController extends BaseController {
return toAjax(mesProductOrderService.productOrderLockInventory(mesProductOrder)); return toAjax(mesProductOrderService.productOrderLockInventory(mesProductOrder));
} }
/**
*
*/
@Log(title = "生产工单", businessType = BusinessType.UPDATE)
@PostMapping("/productOrderPublish")
public AjaxResult productOrderPublish(@RequestBody MesProductOrder mesProductOrder) {
return toAjax(mesProductOrderService.productOrderPublish(mesProductOrder));
}
/**
*
*/
@Log(title = "生产工单", businessType = BusinessType.UPDATE)
@PostMapping("/productOrderRecall")
public AjaxResult productOrderRecall(@RequestBody MesProductOrder mesProductOrder) {
return toAjax(mesProductOrderService.productOrderRecall(mesProductOrder));
}
/** /**
* *
* *

@ -73,4 +73,20 @@ public interface IMesProductOrderService
*/ */
public int productOrderLockInventory(MesProductOrder mesProductOrder); public int productOrderLockInventory(MesProductOrder mesProductOrder);
/**
*
*
* @param mesProductOrder
* @return
*/
public int productOrderPublish(MesProductOrder mesProductOrder);
/**
*
*
* @param mesProductOrder
* @return
*/
public int productOrderRecall(MesProductOrder mesProductOrder);
} }

@ -56,7 +56,7 @@ public class MesProductOrderServiceImpl implements IMesProductOrderService {
@Override @Override
public int insertMesProductOrder(MesProductOrder mesProductOrder) { public int insertMesProductOrder(MesProductOrder mesProductOrder) {
mesProductOrder.setCreateTime(DateUtils.getNowDate()); mesProductOrder.setCreateTime(DateUtils.getNowDate());
//校验是否超出销售数量 //销售订单添加工单:校验是否超出销售数量
if (mesProductOrder.getSaleOrderFlag().equals("1") && StringUtils.isNotNull(mesProductOrder.getSaleOrderId())) { if (mesProductOrder.getSaleOrderFlag().equals("1") && StringUtils.isNotNull(mesProductOrder.getSaleOrderId())) {
checkSalesQuantity(mesProductOrder); checkSalesQuantity(mesProductOrder);
} }
@ -131,9 +131,11 @@ public class MesProductOrderServiceImpl implements IMesProductOrderService {
BigDecimal sumDecimal = new BigDecimal(0); BigDecimal sumDecimal = new BigDecimal(0);
if (StringUtils.isNotNull(mesProductOrders)) { if (StringUtils.isNotNull(mesProductOrders)) {
for (MesProductOrder order : mesProductOrders) { for (MesProductOrder order : mesProductOrders) {
if (!order.getOrderStatus().equals(MesConstants.RECALL)){
sumDecimal = sumDecimal.add(order.getPlanAmount()); sumDecimal = sumDecimal.add(order.getPlanAmount());
} }
} }
}
sumDecimal = sumDecimal.add(mesProductOrder.getPlanAmount()); sumDecimal = sumDecimal.add(mesProductOrder.getPlanAmount());
if (mesProductOrder.getSaleAmount().compareTo(sumDecimal) < 0) { if (mesProductOrder.getSaleAmount().compareTo(sumDecimal) < 0) {
throw new ServiceException("当前工单计划数量为:" + sumDecimal.longValue() + ",超出该订单销售数量!"); throw new ServiceException("当前工单计划数量为:" + sumDecimal.longValue() + ",超出该订单销售数量!");
@ -152,8 +154,40 @@ public class MesProductOrderServiceImpl implements IMesProductOrderService {
if (productOrder.getStockLockFlag().equals("1")) { if (productOrder.getStockLockFlag().equals("1")) {
throw new ServiceException("该工单库存已锁定!"); throw new ServiceException("该工单库存已锁定!");
} }
if (!mesProductOrder.getOrderStatus().equals(MesConstants.UN_PUBLISH)){
throw new ServiceException("该生产工单不是未发布状态!");
}
// 调用仓库接口锁定库存
mesProductOrder.setUpdateTime(DateUtils.getNowDate()); mesProductOrder.setUpdateTime(DateUtils.getNowDate());
return mesProductOrderMapper.updateMesProductOrder(mesProductOrder); return mesProductOrderMapper.updateMesProductOrder(mesProductOrder);
} }
/**
*
* @param mesProductOrder
* @return
*/
@Override
public int productOrderPublish(MesProductOrder mesProductOrder) {
if (!mesProductOrder.getOrderStatus().equals(MesConstants.UN_PUBLISH)){
throw new ServiceException("该生产工单不是未发布状态!");
}
mesProductOrder.setOrderStatus(MesConstants.PUBLISHED);
return mesProductOrderMapper.updateMesProductOrder(mesProductOrder);
}
/**
*
* @param mesProductOrder
* @return
*/
@Override
public int productOrderRecall(MesProductOrder mesProductOrder) {
// 检验生产派工未下达状态的可进行工单撤回
mesProductOrder.setOrderStatus(MesConstants.RECALL);
// 调用仓库接口取消锁定库存
mesProductOrder.setStockLockFlag("0");
return mesProductOrderMapper.updateMesProductOrder(mesProductOrder);
}
} }

@ -70,6 +70,7 @@
<select id="selectMesProductOrderList" parameterType="MesProductOrder" resultMap="MesProductOrderResult"> <select id="selectMesProductOrderList" parameterType="MesProductOrder" resultMap="MesProductOrderResult">
<include refid="selectMesProductOrderVo"/> <include refid="selectMesProductOrderVo"/>
<where> <where>
order_status not in ('9')
<if test="orderCode != null and orderCode != ''">and order_code = #{orderCode}</if> <if test="orderCode != null and orderCode != ''">and order_code = #{orderCode}</if>
<if test="saleOrderId != null ">and sale_order_id = #{saleOrderId}</if> <if test="saleOrderId != null ">and sale_order_id = #{saleOrderId}</if>
<if test="saleorderCode != null and saleorderCode != ''">and saleorder_code = #{saleorderCode}</if> <if test="saleorderCode != null and saleorderCode != ''">and saleorder_code = #{saleorderCode}</if>

@ -52,6 +52,24 @@ export function productOrderLockInventory(data) {
}) })
} }
//发布
export function productOrderPublish(data) {
return request({
url: '/mes/productOrder/productOrderPublish',
method: 'post',
data: data
})
}
//撤回
export function productOrderRecall(data) {
return request({
url: '/mes/productOrder/productOrderRecall',
method: 'post',
data: data
})
}
// 删除生产工单 // 删除生产工单
export function delProductOrder(productOrderId) { export function delProductOrder(productOrderId) {
return request({ return request({

@ -59,24 +59,24 @@
<el-table-column label="物料规格" align="center" prop="materialSpec" /> <el-table-column label="物料规格" align="center" prop="materialSpec" />
<el-table-column label="净重" align="center" prop="netWeight" /> <el-table-column label="净重" align="center" prop="netWeight" />
<el-table-column label="毛重" align="center" prop="grossWeight" /> <el-table-column label="毛重" align="center" prop="grossWeight" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <!-- <el-table-column label="操作" align="center" class-name="small-padding fixed-width">-->
<template slot-scope="scope"> <!-- <template slot-scope="scope">-->
<el-button <!-- <el-button-->
size="mini" <!-- size="mini"-->
type="text" <!-- type="text"-->
icon="el-icon-edit" <!-- icon="el-icon-edit"-->
@click="handleUpdate(scope.row)" <!-- @click="handleUpdate(scope.row)"-->
v-hasPermi="['mes:materialinfo:edit']" <!-- v-hasPermi="['mes:materialinfo:edit']"-->
>修改</el-button> <!-- >修改</el-button>-->
<el-button <!-- <el-button-->
size="mini" <!-- size="mini"-->
type="text" <!-- type="text"-->
icon="el-icon-delete" <!-- icon="el-icon-delete"-->
@click="handleDelete(scope.row)" <!-- @click="handleDelete(scope.row)"-->
v-hasPermi="['mes:materialinfo:remove']" <!-- v-hasPermi="['mes:materialinfo:remove']"-->
>删除</el-button> <!-- >删除</el-button>-->
</template> <!-- </template>-->
</el-table-column> <!-- </el-table-column>-->
</el-table> </el-table>
<pagination <pagination

@ -45,16 +45,16 @@
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<!-- <el-form-item label="库存锁定标识" prop="stockLockFlag">--> <!-- <el-form-item label="库存锁定标识" prop="stockLockFlag">-->
<!-- <el-select v-model="queryParams.stockLockFlag" placeholder="请选择库存锁定标识" clearable>--> <!-- <el-select v-model="queryParams.stockLockFlag" placeholder="请选择库存锁定标识" clearable>-->
<!-- <el-option--> <!-- <el-option-->
<!-- v-for="dict in dict.type.active_flag"--> <!-- v-for="dict in dict.type.active_flag"-->
<!-- :key="dict.value"--> <!-- :key="dict.value"-->
<!-- :label="dict.label"--> <!-- :label="dict.label"-->
<!-- :value="dict.value"--> <!-- :value="dict.value"-->
<!-- />--> <!-- />-->
<!-- </el-select>--> <!-- </el-select>-->
<!-- </el-form-item>--> <!-- </el-form-item>-->
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button> <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button> <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
@ -70,7 +70,8 @@
size="mini" size="mini"
@click="handleAdd" @click="handleAdd"
v-hasPermi="['mes:productOrder:add']" v-hasPermi="['mes:productOrder:add']"
>销售订单新增</el-button> >销售订单新增
</el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button
@ -80,7 +81,8 @@
size="mini" size="mini"
@click="handleNoOrderAdd" @click="handleNoOrderAdd"
v-hasPermi="['mes:productOrder:add']" v-hasPermi="['mes:productOrder:add']"
>无订单新增</el-button> >无订单新增
</el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button
@ -91,7 +93,8 @@
:disabled="single" :disabled="single"
@click="handleUpdate" @click="handleUpdate"
v-hasPermi="['mes:productOrder:edit']" v-hasPermi="['mes:productOrder:edit']"
>修改</el-button> >修改
</el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button
@ -102,7 +105,8 @@
:disabled="multiple" :disabled="multiple"
@click="handleDelete" @click="handleDelete"
v-hasPermi="['mes:productOrder:remove']" v-hasPermi="['mes:productOrder:remove']"
>删除</el-button> >删除
</el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button
@ -112,13 +116,14 @@
size="mini" size="mini"
@click="handleExport" @click="handleExport"
v-hasPermi="['mes:productOrder:export']" v-hasPermi="['mes:productOrder:export']"
>导出</el-button> >导出
</el-button>
</el-col> </el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar>
</el-row> </el-row>
<el-table v-loading="loading" :data="productOrderList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" :data="productOrderList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center"/>
<el-table-column label="主键标识" align="center" prop="productOrderId" v-if="columns[0].visible"/> <el-table-column label="主键标识" align="center" prop="productOrderId" v-if="columns[0].visible"/>
<el-table-column label="工单编号" align="center" prop="orderCode" v-if="columns[1].visible"/> <el-table-column label="工单编号" align="center" prop="orderCode" v-if="columns[1].visible"/>
<el-table-column label="销售订单ID" align="center" prop="saleOrderId" v-if="columns[2].visible"/> <el-table-column label="销售订单ID" align="center" prop="saleOrderId" v-if="columns[2].visible"/>
@ -127,7 +132,7 @@
<el-table-column label="项目编号" align="center" prop="projectNo" v-if="columns[5].visible"/> <el-table-column label="项目编号" align="center" prop="projectNo" v-if="columns[5].visible"/>
<el-table-column label="物料ID" align="center" prop="materialId" v-if="columns[6].visible"/> <el-table-column label="物料ID" align="center" prop="materialId" v-if="columns[6].visible"/>
<el-table-column label="物料bomID" align="center" prop="materialBomId" v-if="columns[7].visible"/> <el-table-column label="物料bomID" align="center" prop="materialBomId" v-if="columns[7].visible"/>
<el-table-column label="派工类型" align="center" prop="dispatchType" v-if="columns[8].visible" > <el-table-column label="派工类型" align="center" prop="dispatchType" v-if="columns[8].visible">
<template slot-scope="scope"> <template slot-scope="scope">
<dict-tag :options="dict.type.dispatch_type" :value="scope.row.dispatchType"/> <dict-tag :options="dict.type.dispatch_type" :value="scope.row.dispatchType"/>
</template> </template>
@ -167,12 +172,12 @@
<span>{{ parseTime(scope.row.realEndTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span> <span>{{ parseTime(scope.row.realEndTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="工单状态" align="center" prop="orderStatus" v-if="columns[19].visible" > <el-table-column label="工单状态" align="center" prop="orderStatus" v-if="columns[19].visible">
<template slot-scope="scope"> <template slot-scope="scope">
<dict-tag :options="dict.type.plan_status" :value="scope.row.orderStatus"/> <dict-tag :options="dict.type.plan_status" :value="scope.row.orderStatus"/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="库存锁定标识" align="center" prop="stockLockFlag" v-if="columns[20].visible" > <el-table-column label="库存锁定标识" align="center" prop="stockLockFlag" v-if="columns[20].visible">
<template slot-scope="scope"> <template slot-scope="scope">
<dict-tag :options="dict.type.active_flag" :value="scope.row.stockLockFlag"/> <dict-tag :options="dict.type.active_flag" :value="scope.row.stockLockFlag"/>
</template> </template>
@ -190,28 +195,50 @@
<span>{{ parseTime(scope.row.updateTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span> <span>{{ parseTime(scope.row.updateTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="220">
<template slot-scope="scope"> <template slot-scope="scope">
<!-- <el-button-->
<!-- size="mini"-->
<!-- type="text"-->
<!-- icon="el-icon-edit"-->
<!-- @click="handleUpdate(scope.row)"-->
<!-- v-hasPermi="['mes:productOrder:edit']"-->
<!-- >修改</el-button>-->
<el-button <el-button
size="mini" size="mini"
type="text" type="text"
icon="el-icon-edit" icon="el-icon-lock"
@click="handleUpdate(scope.row)" @click="handleLockInventory(scope.row)"
v-hasPermi="['mes:productOrder:edit']" >锁库存
>修改</el-button> </el-button>
<el-button <el-button
size="mini" size="mini"
type="text" type="text"
icon="el-icon-edit" icon="el-icon-success"
@click="handleLockInventory(scope.row)" @click="handlePublish(scope.row)"
>锁库存</el-button> >发布
<!-- <el-button--> </el-button>
<!-- size="mini"--> <el-button
<!-- type="text"--> size="mini"
<!-- icon="el-icon-delete"--> type="text"
<!-- @click="handleDelete(scope.row)"--> icon="el-icon-d-arrow-left"
<!-- v-hasPermi="['mes:productOrder:remove']"--> @click="handleRecall(scope.row)"
<!-- >删除</el-button>--> >撤回
</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-right"
@click="handleDispatch(scope.row)"
>生产派工
</el-button>
<!-- <el-button-->
<!-- size="mini"-->
<!-- type="text"-->
<!-- icon="el-icon-delete"-->
<!-- @click="handleDelete(scope.row)"-->
<!-- v-hasPermi="['mes:productOrder:remove']"-->
<!-- >删除</el-button>-->
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -230,9 +257,9 @@
<el-form-item label="工单编号" prop="orderCode"> <el-form-item label="工单编号" prop="orderCode">
<el-input v-model="form.orderCode" placeholder="请输入工单编号" :disabled="true"/> <el-input v-model="form.orderCode" placeholder="请输入工单编号" :disabled="true"/>
</el-form-item> </el-form-item>
<!-- <el-form-item label="销售订单ID" prop="saleOrderId">--> <!-- <el-form-item label="销售订单ID" prop="saleOrderId">-->
<!-- <el-input v-model="form.saleOrderId" placeholder="请输入销售订单ID" />--> <!-- <el-input v-model="form.saleOrderId" placeholder="请输入销售订单ID" />-->
<!-- </el-form-item>--> <!-- </el-form-item>-->
<el-form-item label="销售订单编号" prop="saleorderCode"> <el-form-item label="销售订单编号" prop="saleorderCode">
<el-input v-model="form.saleorderCode" placeholder="请点击右侧检索销售订单编号" readonly> <el-input v-model="form.saleorderCode" placeholder="请点击右侧检索销售订单编号" readonly>
<el-button slot="append" icon="el-icon-search" @click="handleSaleOrderAdd"></el-button> <el-button slot="append" icon="el-icon-search" @click="handleSaleOrderAdd"></el-button>
@ -241,13 +268,13 @@
<el-form-item label="销售订单行号" prop="saleorderLinenumber"> <el-form-item label="销售订单行号" prop="saleorderLinenumber">
<el-input v-model="form.saleorderLinenumber" placeholder="请输入销售订单行号" :disabled="true"/> <el-input v-model="form.saleorderLinenumber" placeholder="请输入销售订单行号" :disabled="true"/>
</el-form-item> </el-form-item>
<!-- <el-form-item label="项目编号" prop="projectNo">--> <!-- <el-form-item label="项目编号" prop="projectNo">-->
<!-- <el-input v-model="form.projectNo" placeholder="请输入项目编号" />--> <!-- <el-input v-model="form.projectNo" placeholder="请输入项目编号" />-->
<!-- </el-form-item>--> <!-- </el-form-item>-->
<!-- <el-form-item label="物料ID" prop="materialId" >--> <!-- <el-form-item label="物料ID" prop="materialId" >-->
<!-- <el-input v-model="form.materialId" placeholder="请输入物料ID" :disabled="true"/>--> <!-- <el-input v-model="form.materialId" placeholder="请输入物料ID" :disabled="true"/>-->
<!-- </el-form-item>--> <!-- </el-form-item>-->
<el-form-item label="物料名称" prop="materialId" > <el-form-item label="物料名称" prop="materialId">
<el-input v-model="form.materialName" placeholder="请输入物料名称" :disabled="true"/> <el-input v-model="form.materialName" placeholder="请输入物料名称" :disabled="true"/>
</el-form-item> </el-form-item>
<el-form-item label="物料BOM" prop="materialBomId"> <el-form-item label="物料BOM" prop="materialBomId">
@ -260,15 +287,6 @@
></el-option> ></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<!-- <el-form-item label="派工类型" prop="dispatchType">-->
<!-- <el-radio-group v-model="form.dispatchType">-->
<!-- <el-radio-->
<!-- v-for="dict in dict.type.dispatch_type"-->
<!-- :key="dict.value"-->
<!-- :label="dict.value"-->
<!-- >{{dict.label}}</el-radio>-->
<!-- </el-radio-group>-->
<!-- </el-form-item>-->
<el-form-item label="工艺路线" prop="dispatchId"> <el-form-item label="工艺路线" prop="dispatchId">
<el-select v-model="form.dispatchId" filterable placeholder="请选择工艺路线" clearable> <el-select v-model="form.dispatchId" filterable placeholder="请选择工艺路线" clearable>
<el-option <el-option
@ -283,14 +301,8 @@
<el-input-number v-model="form.saleAmount" placeholder="请输入销售数量" :disabled="true"/> <el-input-number v-model="form.saleAmount" placeholder="请输入销售数量" :disabled="true"/>
</el-form-item> </el-form-item>
<el-form-item label="计划数量" prop="planAmount"> <el-form-item label="计划数量" prop="planAmount">
<el-input-number v-model="form.planAmount" placeholder="请输入计划数量" /> <el-input-number v-model="form.planAmount" placeholder="请输入计划数量"/>
</el-form-item> </el-form-item>
<!-- <el-form-item label="已派工数量" prop="dispatchAmount">-->
<!-- <el-input-number v-model="form.dispatchAmount" placeholder="请输入已派工数量" />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="完成数量" prop="completeAmount">-->
<!-- <el-input-number v-model="form.completeAmount" placeholder="请输入完成数量" />-->
<!-- </el-form-item>-->
<el-form-item label="计划交货日期" prop="planDeliveryDate"> <el-form-item label="计划交货日期" prop="planDeliveryDate">
<el-date-picker clearable <el-date-picker clearable
v-model="form.planDeliveryDate" v-model="form.planDeliveryDate"
@ -315,27 +327,82 @@
placeholder="请选择计划结束时间"> placeholder="请选择计划结束时间">
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
<!-- <el-form-item label="工单状态" prop="orderStatus">--> <el-form-item label="备注" prop="remark">
<!-- <el-select v-model="form.orderStatus" placeholder="请选择工单状态">--> <el-input v-model="form.remark" type="textarea" placeholder="请输入内容"/>
<!-- <el-option--> </el-form-item>
<!-- v-for="dict in dict.type.plan_status"--> </el-form>
<!-- :key="dict.value"--> <div slot="footer" class="dialog-footer">
<!-- :label="dict.label"--> <el-button type="primary" @click="submitForm"> </el-button>
<!-- :value="dict.value"--> <el-button @click="cancel"> </el-button>
<!-- ></el-option>--> </div>
<!-- </el-select>--> </el-dialog>
<!-- </el-form-item>-->
<!-- <el-form-item label="库存锁定标识" prop="stockLockFlag">--> <!-- 无销售订单添加生产工单对话框 -->
<!-- <el-radio-group v-model="form.stockLockFlag">--> <el-dialog :title="title" :visible.sync="noOrderOpen" width="500px" append-to-body>
<!-- <el-radio--> <el-form ref="form" :model="form" :rules="rules" label-width="110px">
<!-- v-for="dict in dict.type.active_flag"--> <el-form-item label="工单编号" prop="orderCode">
<!-- :key="dict.value"--> <el-input v-model="form.orderCode" :disabled="true"/>
<!-- :label="dict.value"--> </el-form-item>
<!-- >{{dict.label}}</el-radio>--> <!-- <el-form-item label="项目编号" prop="projectNo">-->
<!-- </el-radio-group>--> <!-- <el-input v-model="form.projectNo" placeholder="请输入项目编号"/>-->
<!-- </el-form-item>--> <!-- </el-form-item>-->
<el-form-item label="物料名称" prop="materialName">
<el-input v-model="form.materialName" placeholder="请点击右侧检索物料" readonly>
<el-button slot="append" icon="el-icon-search" @click="handleMaterialAdd"></el-button>
</el-input>
</el-form-item>
<el-form-item label="物料BOM" prop="materialBomId">
<el-select v-model="form.materialBomId" placeholder="请选择物料BOM">
<el-option
v-for="item in materialBomList"
:key="item.materialBomId"
:label="item.materialNameDesc"
:value="item.materialBomId"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="工艺路线" prop="dispatchId">
<el-select v-model="form.dispatchId" filterable placeholder="请选择工艺路线" clearable>
<el-option
v-for="item in routeList"
:key="item.routeId"
:label="item.routeName"
:value="item.routeId"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="销售数量" prop="saleAmount">
<el-input-number v-model="form.saleAmount" placeholder="请输入销售数量"/>
</el-form-item>
<el-form-item label="计划数量" prop="planAmount">
<el-input-number v-model="form.planAmount" placeholder="请输入计划数量"/>
</el-form-item>
<el-form-item label="计划交货日期" prop="planDeliveryDate">
<el-date-picker clearable
v-model="form.planDeliveryDate"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="请选择计划交货日期">
</el-date-picker>
</el-form-item>
<el-form-item label="计划开始时间" prop="planBeginTime">
<el-date-picker clearable
v-model="form.planBeginTime"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="请选择计划开始时间">
</el-date-picker>
</el-form-item>
<el-form-item label="计划结束时间" prop="planEndTime">
<el-date-picker clearable
v-model="form.planEndTime"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="请选择计划结束时间">
</el-date-picker>
</el-form-item>
<el-form-item label="备注" prop="remark"> <el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" /> <el-input v-model="form.remark" type="textarea" placeholder="请输入内容"/>
</el-form-item> </el-form-item>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
@ -353,6 +420,15 @@
</div> </div>
</el-dialog> </el-dialog>
<!-- 添加物料信息对话框 -->
<el-dialog title="选择物料信息" :visible.sync="materialOpen" append-to-body>
<add-bom @selection="handleSelection" ref="materialRef"></add-bom>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitMaterialForm"> </el-button>
<el-button @click="materialOpen = false"> </el-button>
</div>
</el-dialog>
</div> </div>
</template> </template>
@ -363,16 +439,19 @@ import {
delProductOrder, delProductOrder,
addProductOrder, addProductOrder,
updateProductOrder, updateProductOrder,
getOrderCode, productOrderLockInventory getOrderCode, productOrderLockInventory, productOrderPublish, productOrderRecall
} from "@/api/mes/productOrder"; } from "@/api/mes/productOrder";
import addSaleOrder from '@//views/mes/productOrder/addSaleOrder.vue'; import addSaleOrder from '@//views/mes/productOrder/addSaleOrder.vue';
import {getMaterialVisionList} from "@//api/mes/materialBom"; import {getMaterialVisionList} from "@//api/mes/materialBom";
import {findRouteList} from "@//api/mes/baseRoute"; import {findRouteList} from "@//api/mes/baseRoute";
import addBom from '@//views/mes/materialBom/addBom.vue';
export default { export default {
name: "ProductOrder", name: "ProductOrder",
dicts: ['active_flag', 'plan_status', 'dispatch_type'], dicts: ['active_flag', 'plan_status', 'dispatch_type'],
components: { components: {
'add-SaleOrder': addSaleOrder 'add-SaleOrder': addSaleOrder,
'add-bom': addBom
}, },
data() { data() {
return { return {
@ -398,6 +477,8 @@ export default {
saleOrderOpen: false, saleOrderOpen: false,
// //
noOrderOpen: false, noOrderOpen: false,
//
materialOpen: false,
// //
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
@ -433,62 +514,69 @@ export default {
// //
rules: { rules: {
orderCode: [ orderCode: [
{ required: true, message: "工单编号不能为空", trigger: "blur" } {required: true, message: "工单编号不能为空", trigger: "blur"}
], ],
saleOrderId: [ saleOrderId: [
{ required: true, message: "销售订单ID不能为空", trigger: "blur" } {required: true, message: "销售订单ID不能为空", trigger: "blur"}
], ],
saleorderCode: [ saleorderCode: [
{ required: true, message: "销售订单编号不能为空", trigger: "blur" } {required: true, message: "销售订单编号不能为空", trigger: "blur"}
], ],
materialId: [ materialId: [
{ required: true, message: "物料ID不能为空", trigger: "blur" } {required: true, message: "物料ID不能为空", trigger: "blur"}
], ],
materialBomId: [ materialBomId: [
{ required: true, message: "物料bomID不能为空", trigger: "blur" } {required: true, message: "物料bomID不能为空", trigger: "blur"}
], ],
dispatchType: [ dispatchType: [
{ required: true, message: "派工类型不能为空", trigger: "change" } {required: true, message: "派工类型不能为空", trigger: "change"}
], ],
dispatchId: [ dispatchId: [
{ required: true, message: "派工ID不能为空", trigger: "blur" } {required: true, message: "派工ID不能为空", trigger: "blur"}
],
saleAmount: [
{required: true, message: "销售数量不能为空", trigger: "blur"},
{
validator: (rule, value, callback) => callback(Number.isInteger(Number(value)) && Number(value) >= 1 ? undefined : new Error("销售数量需要是大于等于1的整数")),
trigger: "blur"
}
], ],
planAmount: [ planAmount: [
{ required: true, message: "计划数量不能为空", trigger: "blur" }, {required: true, message: "计划数量不能为空", trigger: "blur"},
{ {
validator: (rule, value, callback) => callback(Number(value) >= 1 ? undefined : new Error("计划数量需要大于等于1")), validator: (rule, value, callback) => callback(Number.isInteger(Number(value)) && Number(value) >= 1 ? undefined : new Error("计划数量需要大于等于1的整数")),
trigger: "blur" trigger: "blur"
} }
], ],
}, },
columns: [ columns: [
{ key: 0, label: `主键标识`, visible: false }, {key: 0, label: `主键标识`, visible: false},
{ key: 1, label: `工单编号`, visible: true }, {key: 1, label: `工单编号`, visible: true},
{ key: 2, label: `销售订单ID`, visible: true }, {key: 2, label: `销售订单ID`, visible: true},
{ key: 3, label: `销售订单编号`, visible: true }, {key: 3, label: `销售订单编号`, visible: true},
{ key: 4, label: `销售订单行号`, visible: true }, {key: 4, label: `销售订单行号`, visible: true},
{ key: 5, label: `项目编号`, visible: true }, {key: 5, label: `项目编号`, visible: true},
{ key: 6, label: `物料ID`, visible: true }, {key: 6, label: `物料ID`, visible: true},
{ key: 7, label: `物料bomID`, visible: true }, {key: 7, label: `物料bomID`, visible: true},
{ key: 8, label: `派工类型`, visible: true }, {key: 8, label: `派工类型`, visible: true},
{ key: 9, label: `派工ID`, visible: true }, {key: 9, label: `派工ID`, visible: true},
{ key: 10, label: `销售数量`, visible: true }, {key: 10, label: `销售数量`, visible: true},
{ key: 11, label: `计划数量`, visible: true }, {key: 11, label: `计划数量`, visible: true},
{ key: 12, label: `已派工数量`, visible: true }, {key: 12, label: `已派工数量`, visible: true},
{ key: 13, label: `完成数量`, visible: true }, {key: 13, label: `完成数量`, visible: true},
{ key: 14, label: `发布时间`, visible: true }, {key: 14, label: `发布时间`, visible: true},
{ key: 15, label: `计划开始时间`, visible: true }, {key: 15, label: `计划开始时间`, visible: true},
{ key: 16, label: `计划结束时间`, visible: true }, {key: 16, label: `计划结束时间`, visible: true},
{ key: 17, label: `开始时间`, visible: true }, {key: 17, label: `开始时间`, visible: true},
{ key: 18, label: `完成时间`, visible: true }, {key: 18, label: `完成时间`, visible: true},
{ key: 19, label: `工单状态`, visible: true }, {key: 19, label: `工单状态`, visible: true},
{ key: 20, label: `库存锁定标识`, visible: true }, {key: 20, label: `库存锁定标识`, visible: true},
{ key: 21, label: `备注`, visible: true }, {key: 21, label: `备注`, visible: true},
{ key: 22, label: `创建人`, visible: false }, {key: 22, label: `创建人`, visible: false},
{ key: 23, label: `创建时间`, visible: false }, {key: 23, label: `创建时间`, visible: false},
{ key: 24, label: `更新人`, visible: false }, {key: 24, label: `更新人`, visible: false},
{ key: 25, label: `更新时间`, visible: false }, {key: 25, label: `更新时间`, visible: false},
{ key: 26, label: `计划交货日期`, visible: true }, {key: 26, label: `计划交货日期`, visible: true},
], ],
//BOM //BOM
materialBomList: [], materialBomList: [],
@ -515,6 +603,7 @@ export default {
// //
cancel() { cancel() {
this.open = false; this.open = false;
this.noOrderOpen = false;
this.reset(); this.reset();
}, },
// //
@ -568,16 +657,32 @@ export default {
// //
handleSelectionChange(selection) { handleSelectionChange(selection) {
this.ids = selection.map(item => item.productOrderId) this.ids = selection.map(item => item.productOrderId)
this.single = selection.length!==1 this.single = selection.length !== 1
this.multiple = !selection.length this.multiple = !selection.length
}, },
handleSelection(selection) { handleSelection(selection) {
this.ids = selection.map(item => item.productOrderId) this.ids = selection.map(item => item.productOrderId)
this.single = selection.length!==1 this.single = selection.length !== 1
this.multiple = !selection.length this.multiple = !selection.length
}, },
/** 提交物料信息按钮 */ /** 提交物料信息按钮 */
submitMaterialForm() {
let selectedRow = this.$refs.materialRef.selectedRow;
this.form.materialId = selectedRow.materialId;
this.form.materialName = selectedRow.materialName;
getMaterialVisionList(this.form.materialId).then(response => {
this.materialBomList = response.data
if (this.materialBomList.length !== 0){
this.form.materialBomId = this.materialBomList[0].materialBomId
} else {
this.form.materialBomId = null;
}
})
this.materialOpen = false;
},
/** 提交销售订单信息按钮 */
submitSaleOrderForm() { submitSaleOrderForm() {
let selectedRow = this.$refs.saleOrderRef.selectedRow; let selectedRow = this.$refs.saleOrderRef.selectedRow;
this.form.saleOrderId = selectedRow.saleOrderId; this.form.saleOrderId = selectedRow.saleOrderId;
@ -593,7 +698,11 @@ export default {
this.form.saleOrderFlag = '1'; this.form.saleOrderFlag = '1';
getMaterialVisionList(this.form.materialId).then(response => { getMaterialVisionList(this.form.materialId).then(response => {
this.materialBomList = response.data this.materialBomList = response.data
if (this.materialBomList.length !== 0){
this.form.materialBomId = this.materialBomList[0].materialBomId this.form.materialBomId = this.materialBomList[0].materialBomId
} else {
this.form.materialBomId = null;
}
}) })
this.saleOrderOpen = false; this.saleOrderOpen = false;
}, },
@ -607,10 +716,20 @@ export default {
this.open = true; this.open = true;
this.title = "添加生产工单"; this.title = "添加生产工单";
}, },
/** 新增按钮操作 */
handleMaterialAdd() {
this.materialOpen = true;
},
/** 无订单新增按钮操作 */ /** 无订单新增按钮操作 */
handleNoOrderAdd() { handleNoOrderAdd() {
this.reset(); this.reset();
getOrderCode().then(response => {
this.form.orderCode = response.msg;
})
this.noOrderOpen = true; this.noOrderOpen = true;
this.form.saleOrderFlag = '0';
this.title = "添加生产工单"; this.title = "添加生产工单";
}, },
/** 修改按钮操作 */ /** 修改按钮操作 */
@ -623,6 +742,7 @@ export default {
this.title = "修改生产工单"; this.title = "修改生产工单";
}); });
}, },
/** 锁库存 */ /** 锁库存 */
handleLockInventory(row) { handleLockInventory(row) {
this.form.productOrderId = row.productOrderId; this.form.productOrderId = row.productOrderId;
@ -632,6 +752,31 @@ export default {
this.getList(); this.getList();
}); });
}, },
/** 发布 */
handlePublish(row) {
this.form.productOrderId = row.productOrderId;
this.form.orderStatus = row.orderStatus;
productOrderPublish(this.form).then(response => {
this.$modal.msgSuccess("发布成功");
this.getList();
});
},
/** 撤回 */
handleRecall(row) {
this.form.productOrderId = row.productOrderId;
productOrderRecall(this.form).then(response => {
this.$modal.msgSuccess("撤回成功");
this.getList();
});
},
/** 生产派工 */
handleDispatch(row) {
this.form.productOrderId = row.productOrderId;
},
/** 提交按钮 */ /** 提交按钮 */
submitForm() { submitForm() {
this.$refs["form"].validate(valid => { this.$refs["form"].validate(valid => {
@ -640,12 +785,14 @@ export default {
updateProductOrder(this.form).then(response => { updateProductOrder(this.form).then(response => {
this.$modal.msgSuccess("修改成功"); this.$modal.msgSuccess("修改成功");
this.open = false; this.open = false;
this.noOrderOpen = false;
this.getList(); this.getList();
}); });
} else { } else {
addProductOrder(this.form).then(response => { addProductOrder(this.form).then(response => {
this.$modal.msgSuccess("新增成功"); this.$modal.msgSuccess("新增成功");
this.open = false; this.open = false;
this.noOrderOpen = false;
this.getList(); this.getList();
}); });
} }
@ -655,12 +802,13 @@ export default {
/** 删除按钮操作 */ /** 删除按钮操作 */
handleDelete(row) { handleDelete(row) {
const productOrderIds = row.productOrderId || this.ids; const productOrderIds = row.productOrderId || this.ids;
this.$modal.confirm('是否确认删除生产工单编号为"' + productOrderIds + '"的数据项?').then(function() { this.$modal.confirm('是否确认删除生产工单编号为"' + productOrderIds + '"的数据项?').then(function () {
return delProductOrder(productOrderIds); return delProductOrder(productOrderIds);
}).then(() => { }).then(() => {
this.getList(); this.getList();
this.$modal.msgSuccess("删除成功"); this.$modal.msgSuccess("删除成功");
}).catch(() => {}); }).catch(() => {
});
}, },
/** 导出按钮操作 */ /** 导出按钮操作 */
handleExport() { handleExport() {

Loading…
Cancel
Save