Browse Source

04.07 生产入库

领料申请 - 新增、创建提货单
master
jiayang yue 9 months ago
parent
commit
e3a5dbe931
  1. 9
      src/api/issueNotify/issueNotify.js
  2. 311
      src/views/modules/orderIssure/soIssueNotify/issueNotify.vue
  3. 46
      src/views/modules/production/warehousing.vue

9
src/api/issueNotify/issueNotify.js

@ -1,7 +1,12 @@
import { createAPI } from "@/utils/httpRequest.js"; import { createAPI } from "@/utils/httpRequest.js";
export const searchMenuLanguageById = data => createAPI(`sys/menu/searchMenuLanguageById`,'post',data)
// 获取提货单分页列表
export const issueNotifyPageSearch = data => createAPI(`orderIssure/issureNotify/issueNotifyPageSearch`,'post',data) export const issueNotifyPageSearch = data => createAPI(`orderIssure/issureNotify/issueNotifyPageSearch`,'post',data)
// 新增提货单
export const addBillLading = data => createAPI(`orderIssure/issureNotify/addBillLading`,'post',data)
// 创建提货单
export const createBillLading = data => createAPI(`orderIssure/issureNotify/createBillLading`,'post',data)
export const queryPickDetailList = data => createAPI("/orderIssure/issureNotify/pick/detail",'post',data) export const queryPickDetailList = data => createAPI("/orderIssure/issureNotify/pick/detail",'post',data)

311
src/views/modules/orderIssure/soIssueNotify/issueNotify.vue

@ -81,11 +81,11 @@
width="100" width="100"
label="操作"> label="操作">
<template slot-scope="scope"> <template slot-scope="scope">
<a v-if="!authUpdate" type="text" size="small" @click="createBillLading(scope.row)">创建提货单</a>
<a v-if="scope.row.status === '保存'" type="text" size="small" @click="createBillLading(scope.row)">创建提货单</a>
<el-dropdown trigger="click"> <el-dropdown trigger="click">
<el-link style="cursor: pointer;font-size: 12px">更多</el-link> <el-link style="cursor: pointer;font-size: 12px">更多</el-link>
<el-dropdown-menu slot="dropdown"> <el-dropdown-menu slot="dropdown">
<el-dropdown-item @click.native="getBillOfLadingDetail(scope.row)">提货单明细</el-dropdown-item>
<el-dropdown-item @click.native="getBillLadingDetail(scope.row)">提货单明细</el-dropdown-item>
<el-dropdown-item @click.native="createBillLadingSummary(scope.row)">创建提货单汇总</el-dropdown-item> <el-dropdown-item @click.native="createBillLadingSummary(scope.row)">创建提货单汇总</el-dropdown-item>
<el-dropdown-item @click.native="getBillLadingSummary(scope.row)">提货单汇总</el-dropdown-item> <el-dropdown-item @click.native="getBillLadingSummary(scope.row)">提货单汇总</el-dropdown-item>
</el-dropdown-menu> </el-dropdown-menu>
@ -104,61 +104,31 @@
layout="total, sizes, prev, pager, next, jumper"> layout="total, sizes, prev, pager, next, jumper">
</el-pagination> </el-pagination>
<el-dialog title="申请单" :close-on-click-modal="false" v-drag :visible.sync="modalFlag" width="600px">
<el-form :model="modalData" :rules="rules" label-position="top" label-width="100px">
<el-form-item label="申请单号" prop="notifyNo">
<el-input v-model="modalData.notifyNo" :disabled="modalDisableFlag"></el-input>
<el-dialog title="新增" :close-on-click-modal="false" v-drag :visible.sync="modalFlag" width="458px">
<el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-top: 5px;">
<el-form-item label="要求发料日期" prop="needDate" :rules="rules.needDate">
<el-date-picker v-model="modalData.needDate" type="date" placeholder="选择日期"
style="width: 160px"></el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="站点" prop="site">
<el-input v-model="modalData.site" :disabled="modalDisableFlag"></el-input>
<el-form-item label="3H订单号" prop="thOrderNo" :rules="rules.thOrderNo">
<el-input v-model="modalData.thOrderNo" style="width: 120px"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="申请日期" prop="notifyDate">
<el-date-picker v-model="modalData.notifyDate" type="date" placeholder="选择日期"></el-date-picker>
</el-form-item>
<el-form-item label="申请人" prop="createBy">
<el-input v-model="modalData.createBy"></el-input>
</el-form-item>
<el-form-item label="录入时间" prop="createDate">
<el-date-picker v-model="modalData.createDate" type="datetime" placeholder="选择日期时间"></el-date-picker>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="modalData.remark"></el-input>
</el-form-item>
<el-form-item label="是否领料" prop="issueFlag">
<el-select v-model="modalData.issueFlag" placeholder="请选择">
<el-option label="是" value="Y"></el-option>
<el-option label="否" value="N"></el-option>
</el-select>
</el-form-item>
<el-form-item label="领料结果" prop="issueResult">
<el-input v-model="modalData.issueResult"></el-input>
</el-form-item>
<el-form-item label="状态" prop="status">
<el-input v-model="modalData.status"></el-input>
</el-form-item>
<el-form-item label="IFS提货单号" prop="ifsPickListNo">
<el-input v-model="modalData.ifsPickListNo"></el-input>
</el-form-item>
<el-form-item label="3H订单号" prop="thOrderNo">
<el-input v-model="modalData.thOrderNo"></el-input>
</el-form-item>
<el-form-item label="要求发料日期" prop="needDate">
<el-date-picker v-model="modalData.needDate" type="date" placeholder="选择日期"></el-date-picker>
</el-form-item>
<el-form-item label="生产订单号" prop="orderNo">
<el-input v-model="modalData.orderNo"></el-input>
<el-form-item label="生产订单号" prop="orderNo" :rules="rules.orderNo">
<el-input v-model="modalData.orderNo" style="width: 120px"></el-input>
</el-form-item> </el-form-item>
</el-form> </el-form>
<span slot="footer" class="dialog-footer">
<el-footer
style="height:35px; margin-top: 20px; padding-bottom:5px; text-align:center"
>
<el-button type="primary" @click="saveData()">保存</el-button> <el-button type="primary" @click="saveData()">保存</el-button>
<el-button type="primary" @click="modalFlag = false; modalDisableFlag = false">关闭</el-button>
</span>
<el-button type="primary" @click="modalFlag = false">关闭</el-button>
</el-footer>
</el-dialog> </el-dialog>
</div> </div>
</template> </template>
<script> <script>
import {issueNotifyPageSearch} from "../../../../api/issueNotify/issueNotify";
import {issueNotifyPageSearch, createBillLading, addBillLading} from "../../../../api/issueNotify/issueNotify";
export default { export default {
name: 'IssureNotifyList', name: 'IssureNotifyList',
@ -189,117 +159,184 @@ export default {
modalFlag: false, modalFlag: false,
modalDisableFlag: false, modalDisableFlag: false,
modalData: { modalData: {
notifyNo: '',
site: '',
notifyDate: '',
createBy: '',
createDate: '',
remark: '',
issueFlag: '',
issueResult: '',
site: this.$store.state.user.site,
status: '', status: '',
ifsPickListNo: '',
updateBy: '',
updateDate: '',
thOrderNo: '', thOrderNo: '',
needDate: '', needDate: '',
orderNo: '' orderNo: ''
}, },
modalCompareData: {}, modalCompareData: {},
// ======== ========
rules: { rules: {
notifyNo: [{ required: true, message: '请输入申请单号', trigger: 'blur' }],
site: [{ required: true, message: '请输入站点', trigger: 'blur' }]
orderNo: [
{required: true, message: ' ', trigger: 'change'},
{required: true, message: ' ', trigger: 'blur'},
],
needDate: [
{required: true, message: ' ', trigger: 'change'},
{required: true, message: ' ', trigger: 'blur'},
],
thOrderNo: [
{required: true, message: ' ', trigger: 'change'},
{required: true, message: ' ', trigger: 'blur'},
],
}, },
columnList: [ columnList: [
{ {
userId: this.$store.state.user.name,
functionId: 400002,
serialNumber: '400002Table1ReleaseNo',
tableId: '400002Table1',
tableName: '领料申请单表',
columnProp: 'notifyNo', columnProp: 'notifyNo',
columnLabel: '申请单号', columnLabel: '申请单号',
headerAlign: 'center', headerAlign: 'center',
align: 'center',
columnSortable: false,
columnWidth: 120,
align: 'left',
columnHidden: false, columnHidden: false,
fixed: ''
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 90,
}, },
{ {
userId: this.$store.state.user.name,
functionId: 400002,
serialNumber: '400002Table1NotifyDate',
tableId: '400002Table1',
tableName: '领料申请单表',
columnProp: 'notifyDate', columnProp: 'notifyDate',
columnLabel: '申请日期', columnLabel: '申请日期',
headerAlign: 'center', headerAlign: 'center',
align: 'center', align: 'center',
columnSortable: false,
columnWidth: 120,
columnHidden: false, columnHidden: false,
fixed: ''
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 90,
}, },
{ {
userId: this.$store.state.user.name,
functionId: 400002,
serialNumber: '400002Table1Status',
tableId: '400002Table1',
tableName: '领料申请单表',
columnProp: 'status', columnProp: 'status',
columnLabel: '状态',
columnLabel: '状态',
headerAlign: 'center', headerAlign: 'center',
align: 'center', align: 'center',
columnHidden: false,
columnImage: false,
columnSortable: false, columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 80, columnWidth: 80,
columnHidden: false,
fixed: ''
}, },
{ {
userId: this.$store.state.user.name,
functionId: 400002,
serialNumber: '400002Table1IfsPickListNo',
tableId: '400002Table1',
columnProp: 'ifsPickListNo', columnProp: 'ifsPickListNo',
columnLabel: 'IFS提货单号', columnLabel: 'IFS提货单号',
headerAlign: 'center', headerAlign: 'center',
align: 'center',
columnSortable: false,
columnWidth: 130,
align: 'left',
columnHidden: false, columnHidden: false,
fixed: ''
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 70,
}, },
{ {
userId: this.$store.state.user.name,
functionId: 400002,
serialNumber: '400002Table1ThOrderNo',
tableId: '400002Table1',
columnProp: 'thOrderNo', columnProp: 'thOrderNo',
columnLabel: '3H订单号', columnLabel: '3H订单号',
headerAlign: 'center', headerAlign: 'center',
align: 'center',
columnSortable: false,
columnWidth: 130,
align: 'left',
columnHidden: false, columnHidden: false,
fixed: ''
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 80,
}, },
{ {
userId: this.$store.state.user.name,
functionId: 400002,
serialNumber: '400002Table1NeedDate',
tableId: '400002Table1',
columnProp: 'needDate', columnProp: 'needDate',
columnLabel: '要求发料日期', columnLabel: '要求发料日期',
headerAlign: 'center', headerAlign: 'center',
align: 'center', align: 'center',
columnSortable: false,
columnWidth: 120,
columnHidden: false, columnHidden: false,
fixed: ''
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 90,
}, },
{ {
userId: this.$store.state.user.name,
functionId: 400002,
serialNumber: '400002Table1OrderNo',
tableId: '400002Table1',
columnProp: 'orderNo', columnProp: 'orderNo',
columnLabel: '生产订单号', columnLabel: '生产订单号',
headerAlign: 'center', headerAlign: 'center',
align: 'center',
columnSortable: false,
columnWidth: 130,
align: 'left',
columnHidden: false, columnHidden: false,
fixed: ''
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 70,
}, },
{ {
userId: this.$store.state.user.name,
functionId: 400002,
serialNumber: '400002Table1CreateBy',
tableId: '400002Table1',
columnProp: 'createBy', columnProp: 'createBy',
columnLabel: '申请人', columnLabel: '申请人',
headerAlign: 'center', headerAlign: 'center',
align: 'center',
columnSortable: false,
columnWidth: 100,
align: 'left',
columnHidden: false, columnHidden: false,
fixed: ''
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 70,
}, },
{ {
userId: this.$store.state.user.name,
functionId: 400002,
serialNumber: '400002Table1CreateDate',
tableId: '400002Table1',
columnProp: 'createDate', columnProp: 'createDate',
columnLabel: '录入时间', columnLabel: '录入时间',
headerAlign: 'center', headerAlign: 'center',
align: 'center', align: 'center',
columnSortable: false,
columnWidth: 140,
columnHidden: false, columnHidden: false,
fixed: ''
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 90,
}, },
] ]
}; };
@ -358,71 +395,59 @@ export default {
this.modalFlag = true; this.modalFlag = true;
}, },
createBillLading(row) { createBillLading(row) {
let inData = {
site: row.site,
notifyNo: row.notifyNo,
thOrderNo: row.thOrderNo,
needDate: row.needDate,
createBy: this.$store.state.user.name,
};
this.$confirm('确定创建提货单吗?', '提示', { this.$confirm('确定创建提货单吗?', '提示', {
confirmButtonText: '确定', confirmButtonText: '确定',
cancelButtonText: '取消', cancelButtonText: '取消',
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
axios.post('/createBillLading', row)
.then(response => {
this.$message.success('创建成功');
this.getDataList();
createBillLading(inData).then(({data}) =>
{
if (data.code === 0) {
this.$message.success('创建成功');
this.getDataList();
} else {
this.$message.error('创建失败:' + data.msg);
}
}) })
.catch(error => {
this.$message.error('创建失败');
});
}).catch(() => {});
})
}, },
saveData() { saveData() {
if (!this.modalData.notifyNo) {
this.$message.warning('申请单号不能为空');
if (!this.modalData.thOrderNo) {
this.$message.error('3H订单号不能为空');
return; return;
} }
if (!this.modalData.site) {
this.$message.warning('站点不能为空');
if (!this.modalData.orderNo) {
this.$message.error('生产订单号不能为空');
return; return;
} }
if (this.modalDisableFlag) {
//
axios.put('/issureNotify', this.modalData)
.then(response => {
this.$message.success('修改成功');
this.getDataList();
this.modalFlag = false;
this.modalDisableFlag = false;
})
.catch(error => {
this.$message.error('修改失败');
});
} else {
//
axios.post('/issureNotify', this.modalData)
.then(response => {
this.$message.success('新增成功');
this.getDataList();
this.modalFlag = false;
})
.catch(error => {
this.$message.error('新增失败');
});
if (!this.modalData.needDate) {
this.$message.error('要求发料日期不能为空');
return;
} }
// needDateGMT+8
let gmt8Date = new Date(new Date(this.modalData.needDate).getTime() + 8 * 60 * 60 * 1000);
// yyyy-MM-dd
this.modalData.needDate = `${gmt8Date.getFullYear()}-${(gmt8Date.getMonth() + 1).toString().padStart(2, '0')}-${gmt8Date.getDate().toString().padStart(2, '0')}`;
this.modalData.status = '保存';
this.modalData.site = this.$store.state.user.site;
addBillLading(this.modalData).then(({data}) =>
{
if (data.code === 0) {
this.modalFlag = false;
this.$message.success('创建成功');
this.getDataList();
} else {
this.$message.error('创建失败:' + data.msg);
}
})
}, },
deleteIssureNotify(row) {
this.$confirm('确定删除该记录吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
axios.delete(`/issureNotify/${row.notifyNo}/${row.site}`)
.then(response => {
this.$message.success('删除成功');
this.getDataList();
})
.catch(error => {
this.$message.error('删除失败');
});
}).catch(() => {});
}
} }
}; };
</script> </script>

46
src/views/modules/production/warehousing.vue

@ -14,7 +14,7 @@
<el-form-item :label="'计划完工日期'"> <el-form-item :label="'计划完工日期'">
<el-date-picker <el-date-picker
style="width: 120px" style="width: 120px"
v-model="searchData.startDate"
v-model="searchData.startTime"
type="date" type="date"
value-format="yyyy-MM-dd" value-format="yyyy-MM-dd"
placeholder="选择日期"> placeholder="选择日期">
@ -26,7 +26,7 @@
<el-form-item :label="' '"> <el-form-item :label="' '">
<el-date-picker <el-date-picker
style="width: 120px" style="width: 120px"
v-model="searchData.endDate"
v-model="searchData.endTime"
type="date" type="date"
value-format="yyyy-MM-dd" value-format="yyyy-MM-dd"
placeholder="选择日期"> placeholder="选择日期">
@ -82,7 +82,7 @@
</el-pagination> </el-pagination>
<el-dialog <el-dialog
:title="modalData.title"
title="接收"
v-drag v-drag
@close="closeSaveDataDialog" @close="closeSaveDataDialog"
:close-on-click-modal="false" :close-on-click-modal="false"
@ -100,27 +100,28 @@
<el-row :gutter="10"> <el-row :gutter="10">
<el-col :span="5"> <el-col :span="5">
<el-form-item label="生产订单号" prop="orderNo"> <el-form-item label="生产订单号" prop="orderNo">
<el-input v-model="modalData.orderNo" disabled style="width: 110px"/>
<el-input v-model="modalData.orderNo" disabled style="width: 110px;margin-top: 7px"/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="4"> <el-col :span="4">
<el-form-item label="下单号" prop="releaseNo"> <el-form-item label="下单号" prop="releaseNo">
<el-input v-model="modalData.releaseNo" disabled style="width: 80px"/>
<el-input v-model="modalData.releaseNo" disabled style="width: 80px;margin-top: 7px"/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="4"> <el-col :span="4">
<el-form-item label="次序号" prop="sequenceNo"> <el-form-item label="次序号" prop="sequenceNo">
<el-input v-model="modalData.sequenceNo" disabled style="width: 80px"/>
<el-input v-model="modalData.sequenceNo" disabled style="width: 80px;margin-top: 7px"/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="5"> <el-col :span="5">
<el-form-item label="3H订单号" prop="thOrderNo"> <el-form-item label="3H订单号" prop="thOrderNo">
<el-input v-model="modalData.thOrderNo" disabled style="width: 110px"/>
<el-input v-model="modalData.thOrderNo" disabled style="width: 110px;margin-top: 7px"/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="5"> <el-col :span="5">
<el-form-item label="订单数量" prop="lotSize"> <el-form-item label="订单数量" prop="lotSize">
<el-input v-model="modalData.lotSize" disabled style="width: 110px"/>
<el-input-number :controls="false" v-model="modalData.lotSize" disabled style="width: 110px;margin-top:
-5px"/>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
@ -128,22 +129,22 @@
<el-row :gutter="10"> <el-row :gutter="10">
<el-col :span="5"> <el-col :span="5">
<el-form-item label="产品编号" prop="partNo"> <el-form-item label="产品编号" prop="partNo">
<el-input v-model="modalData.partNo" disabled style="width: 110px"/>
<el-input v-model="modalData.partNo" disabled style="width: 110px;margin-top: 7px"/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="产品名称" prop="partDesc"> <el-form-item label="产品名称" prop="partDesc">
<el-input v-model="modalData.partDesc" disabled style="width: 185px"/>
<el-input v-model="modalData.partDesc" disabled style="width: 185px;margin-top: 7px"/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="5"> <el-col :span="5">
<el-form-item label="已入库数量" prop="stockQty"> <el-form-item label="已入库数量" prop="stockQty">
<el-input v-model="modalData.stockQty" disabled style="width: 110px"/>
<el-input-number :controls="false" v-model="modalData.stockQty" disabled style="width: 110px"/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="5"> <el-col :span="5">
<el-form-item label="待入库数量" prop="needQty"> <el-form-item label="待入库数量" prop="needQty">
<el-input v-model="modalData.needQty" disabled style="width: 110px"/>
<el-input-number :controls="false" v-model="modalData.needQty" disabled style="width: 110px"/>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
@ -160,22 +161,22 @@
<el-row :gutter="10"> <el-row :gutter="10">
<el-col :span="6"> <el-col :span="6">
<el-form-item label="入库数量" prop="quantity" :rules="rules.quantity"> <el-form-item label="入库数量" prop="quantity" :rules="rules.quantity">
<el-input v-model="modalData.quantity" style="width: 110px"/>
<el-input-number :controls="false" v-model="modalData.quantity" style="width: 110px"/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="库位" prop="locationNo" :rules="rules.locationNo"> <el-form-item label="库位" prop="locationNo" :rules="rules.locationNo">
<el-input v-model="modalData.locationNo" style="width: 110px"/>
<el-input v-model="modalData.locationNo" style="width: 110px;margin-top: 7px"/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="批号" prop="serialNo" :rules="rules.serialNo"> <el-form-item label="批号" prop="serialNo" :rules="rules.serialNo">
<el-input v-model="modalData.serialNo" style="width: 110px"/>
<el-input v-model="modalData.serialNo" style="width: 110px;margin-top: 7px"/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="W/D/R" prop="waivDevRejNo" :rules="rules.waivDevRejNo"> <el-form-item label="W/D/R" prop="waivDevRejNo" :rules="rules.waivDevRejNo">
<el-input v-model="modalData.waivDevRejNo" style="width: 110px"/>
<el-input v-model="modalData.waivDevRejNo" style="width: 110px;margin-top: 7px"/>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
@ -244,8 +245,8 @@ export default {
orderNo: '', orderNo: '',
partNo: '', partNo: '',
thOrderNo: '', thOrderNo: '',
startDate: '',
endDate: '',
startTime: '',
endTime: '',
page: 1, page: 1,
limit: 50, limit: 50,
}, },
@ -657,3 +658,12 @@ export default {
line-height: 1.5; line-height: 1.5;
} }
</style> </style>
<style scoped>
.el-input-number /deep/ .el-input__inner{
text-align: right;
padding-right: 5px !important;
margin-top: 5px;
}
</style>
Loading…
Cancel
Save