人工入库完成后更新点位当前存储容器类型,释放点位状态

main
bbl\baobl 2024-03-25 11:22:32 +08:00
parent 9485d328a0
commit 9c86b08e0c
13 changed files with 217 additions and 73 deletions

View File

@ -36,5 +36,12 @@ export function startAsn(id) {
data: id
})
}
export function cancelAsn(id) {
return request({
url: 'api/asn/cancelAsn',
method: 'post',
data: id
})
}
export default { add, edit, del, getAsnList, startAsn }
export default { add, edit, del, getAsnList, startAsn, cancelAsn }

View File

@ -1,9 +1,10 @@
import request from '@/utils/request'
export function getPoints() {
export function getPoints(data) {
return request({
url: 'api/point/getPointList',
method: 'post'
method: 'post',
data
})
}
export function add(data) {

View File

@ -28,6 +28,13 @@ export function edit(data) {
data
})
}
export function devanRfid(data) {
return request({
url: 'api/task/devanRfid',
method: 'post',
data
})
}
export function manualReceiving(data) {
return request({
url: 'api/task/manualReceiving',
@ -43,4 +50,4 @@ export function queryPickTask(id) {
})
}
export default { add, edit, del ,getTaskInfo,queryPickTask,manualReceiving}
export default { add, edit, del ,getTaskInfo,queryPickTask,manualReceiving,devanRfid}

View File

@ -51,8 +51,14 @@
<el-form-item label="上游识别码" prop="name">
<el-input v-model="form.sourceName" style="width: 370px;"/>
</el-form-item>
<el-form-item label="类型" prop="type">
<el-select v-model="form.type" style="width: 370px;" filterable placeholder="请选择">
<!-- <el-form-item label="操作方式" prop="type">
<el-select
v-model="form.type"
size="small"
placeholder="操作方式"
class="filter-item"
style="width: 370px"
>
<el-option
v-for="item in dict.bill_type"
:key="item.id"
@ -61,7 +67,16 @@
/>
</el-select>
</el-form-item>
<el-form-item label="地标" prop="point" >
<el-select v-model="form.point" value-key="id" filterable placeholder="请选择" style="width: 370px;">
<el-option
v-for="item in pointList"
:key="item.id"
:label="item.name"
:value="item"
/>
</el-select>
</el-form-item>-->
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="text" @click="crud.cancelCU"></el-button>
@ -81,12 +96,16 @@
<el-table-column prop="code" label="编号"/>
<el-table-column prop="name" label="名称"/>
<el-table-column prop="sourceName" label="上游识别码"/>
<el-table-column prop="type" label="类型">
<!-- <el-table-column prop="type" label="类型">
<template slot-scope="scope">
{{ dict.label.bill_type[scope.row.type] }}
</template>
</el-table-column>
<el-table-column :show-overflow-tooltip="true" prop="pointName" label="点位编码">
<template slot-scope="scope">
<div v-if="scope.row.point!=null">{{ scope.row.point.code }}</div>
</template>
</el-table-column>-->
<el-table-column prop="enabled" label="启用">
<template slot-scope="scope">
<el-switch
@ -124,6 +143,7 @@ import crudOperation from '@crud/CRUD.operation'
import udOperation from '@crud/UD.operation'
import pagination from '@crud/Pagination'
import rrOperation from "@crud/RR.operation.vue";
import crudPoint from "@/api/point";
const defaultForm = {
id: null,
@ -131,6 +151,7 @@ const defaultForm = {
name: null,
deptId: null,
type: null,
point: null,
sourceName: null,
sourceId: null,
createBy: null,
@ -166,6 +187,7 @@ export default {
edit: ['admin', 'billType:edit'],
del: ['admin', 'billType:del']
},
pointList: [],
rules: {
code: [
{required: true, message: '请输入编号', trigger: 'blur'},
@ -175,15 +197,29 @@ export default {
],
type: [
{required: true, message: '请选择类型', trigger: 'blur'},
],
]
}
}
},
mounted() {
// this.getPoint()
},
methods: {
// false
[CRUD.HOOK.beforeRefresh]() {
return true
},
//
getPoint() {
crudPoint.getPoints({ }).then(res => {
this.pointList = res.map(function(obj) {
if (obj.hasChildren) {
obj.children = null
}
return obj
})
})
},
changeEnabled(data, val) {
this.$confirm('此操作将 "' + this.dict.label.base_staus[val] + '" ' + data.name + ', 是否继续?', '提示', {
confirmButtonText: '确定',

View File

@ -44,11 +44,22 @@
<el-form-item label="名称" prop="name">
<el-input v-model="form.name" style="width: 370px;"/>
</el-form-item>
<el-form-item label="业务类型">
<el-form-item label="单据类型" prop="lampStatus">
<el-select v-model="form.lampStatus" value-key="id" filterable placeholder="请选择单据类型"
style="width: 370px;">
<el-option
v-for="item in billTypeList"
:key="item.id"
:label="item.name"
:value="item.code"
/>
</el-select>
</el-form-item>
<el-form-item label="操作方式" prop="lampCode">
<el-select
v-model="form.lampCode"
size="small"
placeholder="业务类型"
placeholder="操作方式"
class="filter-item"
style="width: 370px"
>
@ -61,7 +72,7 @@
</el-select>
</el-form-item>
<el-form-item label="地标" prop="point" >
<el-select v-model="form.point" value-key="id" filterable placeholder="请选择" style="width: 370px;">
<el-select v-model="form.point" value-key="id" clearable filterable placeholder="请选择" style="width: 370px;">
<el-option
v-for="item in pointList"
:key="item.id"
@ -89,7 +100,8 @@
<el-table-column type="selection" width="55"/>
<el-table-column prop="code" label="编号"/>
<el-table-column prop="name" label="名称"/>
<el-table-column :show-overflow-tooltip="true" prop="status" label="业务类型">
<el-table-column prop="lampStatus" label="单据类型"/>
<el-table-column :show-overflow-tooltip="true" prop="status" label="操作方式">
<template slot-scope="scope">
{{ dict.label.bill_type[scope.row.lampCode] }}
</template>
@ -140,15 +152,19 @@ import pagination from '@crud/Pagination'
import {getItems} from "@/api/item"
import crudPoint, {getPoints} from "@/api/point"
import DonMessage from '@/utils/message'
import crudBillType from '@/api/billType'
import crudBillType, {getBillType} from '@/api/billType'
import { mapGetters } from 'vuex'
import { getToken } from '@/utils/auth'
import {getAres} from "@/api/area";
const defaultForm = {
id: null,
code: null,
name: null,
item: null,
point: null,
lampCode: null,
lampStatus: null,
createBy: null,
updateBy: null,
createTime: null,
@ -184,12 +200,14 @@ export default {
},
mounted() {
this.getPoint()
this.getBillType()
},
data() {
return {
headers: { 'Authorization': getToken() },
items: [],
pointList: [],
billTypeList: [],
params: {
type: ''
},
@ -203,11 +221,8 @@ export default {
code: [
{required: true, message: '编号必填', trigger: 'blur'}
],
item: [
{required: true, message: '物料必填', trigger: 'blur'}
],
point: [
{required: true, message: '点位必填', trigger: 'blur'}
lampCode: [
{required: true, message: '操作方式', trigger: 'blur'}
]
}
}
@ -228,6 +243,16 @@ export default {
})
})
},
getBillType() {
getBillType({}).then(res => {
this.billTypeList = res.map(function(obj) {
if (obj.hasChildren) {
obj.children = null
}
return obj
})
})
},
callBox(datas) {
if (this.$refs.table.selection.length >= 1) {
this.$confirm(`选中的${datas.length}条数据呼叫确认?`, '提示', {

View File

@ -53,7 +53,7 @@
<!--表单组件-->
<el-dialog :close-on-click-modal="false" :before-close="crud.cancelCU" :visible.sync="crud.status.cu > 0"
:title="crud.status.title" width="600px">
<el-form ref="form" :model="form" :inline="true" :rules="rules" size="small" label-width="66px">
<el-form ref="form" :model="form" :inline="true" :rules="rules" size="small" label-width="80px">
<el-form-item label="sku" prop="code">
<el-input v-model="form.code" style="width: 180px;"/>
</el-form-item>
@ -134,7 +134,7 @@
<el-table-column prop="name" label="名称" width="150"/>
<el-table-column prop="goodType" label="存储库区" width="150">
</el-table-column>
<el-table-column prop="extendD1" label="容器装载数"/>
<el-table-column prop="extendD1" label="装载数"/>
<el-table-column prop="unit" label="单位">
<template slot-scope="scope">
{{ dict.label.item_unit[scope.row.unit] }}

View File

@ -119,8 +119,8 @@
<viewFullStockOut ref="fullStockOut"/>
<!--表单组件-->
<el-dialog :close-on-click-modal="false" :before-close="crud.cancelCU" :visible.sync="crud.status.cu > 0"
:title="crud.status.title" width="500px">
<el-form ref="form" :model="form" :rules="rules" size="small" label-width="80px">
:title="crud.status.title" width="510px">
<el-form ref="form" :model="form" :inline="true" :rules="rules" size="small" label-width="80px">
<el-form-item label="代码" prop="code">
<el-input v-model="form.code" style="width: 370px;"/>
@ -166,7 +166,7 @@
/>
</el-select>
</el-form-item>
<el-form-item label="存储类型(容器)">
<el-form-item label="当前容器">
<el-select v-model="form.storageType" clearable value-key="id" filterable placeholder="请选择" style="width: 370px;">
<el-option
v-for="item in storageTypes"
@ -176,6 +176,12 @@
/>
</el-select>
</el-form-item>
<el-form-item label="深浅位">
<el-input type="heat" v-model="form.heat" style="width: 100px;"/>
</el-form-item>
<el-form-item label="深浅位组">
<el-input type="beatCode" v-model="form.beatCode" style="width: 100px;"/>
</el-form-item>
<el-form-item label="描述">
<el-input type="textarea" v-model="form.description" style="width: 370px;"/>
</el-form-item>
@ -207,11 +213,21 @@
{{ dict.label.use_status[scope.row.status] }}
</template>
</el-table-column>
<el-table-column prop="storageType" label="存储类型(容器)">
<el-table-column prop="storageType" label="当前容器">
<template slot-scope="scope">
<span v-if="scope.row.storageType !=null">{{ scope.row.storageType }}</span>
</template>
</el-table-column>
<el-table-column prop="heat" label="深浅位">
<template slot-scope="scope">
<span v-if="scope.row.heat !=null">{{ scope.row.heat }}</span>
</template>
</el-table-column>
<el-table-column prop="beatCode" label="深浅位组">
<template slot-scope="scope">
<span v-if="scope.row.beatCode !=null">{{ scope.row.beatCode }}</span>
</template>
</el-table-column>
<el-table-column label="启用" align="center" prop="enabled">
<template slot-scope="scope">
<el-switch
@ -273,7 +289,7 @@ import pointUrl from '@/api/point'
import multiAdjust from "@/views/base-data/point/multiAdjust.vue";
import {getStockTypes} from "@/api/stockType";
const defaultForm = {id: null, status: 'FREE', enabled: 1, code: null, name: null, description: null, area: null, storageType: null}
const defaultForm = {id: null, status: 'FREE', enabled: 1, code: null, name: null, description: null, area: null, storageType: null,beatCode: null,heat: null}
export default {
name: 'Point',
components: {

View File

@ -11,22 +11,38 @@
type="primary"
size="mini"
icon="el-icon-document-add"
:disabled="crud.selections.length !== 1 || this.crud.selections[0].status!=='OPEN'"
@click="startAsn(crud.selections[0].id)"
>
开始收货
占用库位
</el-button>
<el-button
slot="left"
v-permission="permission.add"
class="filter-item"
type="primary"
size="mini"
icon="el-icon-document-add"
:disabled="crud.selections.length !== 1 || this.crud.selections[0].status!=='ACTIVE'"
@click="cancelAsn(crud.selections[0].id)"
>
取消占用
</el-button>
</crudOperation>
<!--表单组件-->
<el-dialog :close-on-click-modal="false" :before-close="crud.cancelCU" :visible.sync="crud.status.cu > 0" :title="crud.status.title" width="500px">
<el-form ref="form" :model="form" :rules="rules" size="small" label-width="80px">
<el-form-item label="系统单号">
<el-input v-model="form.relatedBill1" style="width: 370px;" />
</el-form-item>
<el-form-item label="订单来源">
<el-input v-model="form.orderOrigin" style="width: 370px;" />
</el-form-item>
<el-form-item label="货主">
<el-input v-model="form.structure" style="width: 370px;" />
</el-form-item>
<el-form-item label="系统单号">
<el-input v-model="form.relatedBill1" style="width: 370px;" />
<el-form-item label="登记单号">
<el-input v-model="form.relatedBill2" style="width: 370px;" />
</el-form-item>
<!-- <el-form-item label="订单状态">
<el-input v-model="form.status" style="width: 370px;" />
@ -66,12 +82,13 @@
<!--表格渲染-->
<el-table border ref="table" v-loading="crud.loading" :data="crud.data" size="small" style="width: 100%;" @selection-change="crud.selectionChangeHandler">
<el-table-column type="selection" width="55" />
<el-table-column prop="relatedBill1" label="系统单号" />
<el-table-column prop="relatedBill2" label="登记单号" />
<el-table-column prop="dept.name" label="仓库" />
<el-table-column prop="billType.name" label="单据类型" />
<el-table-column prop="orderOrigin" label="订单来源" />
<el-table-column prop="structure" label="货主" />
<el-table-column prop="erTime" label="操作时间" />
<el-table-column prop="relatedBill1" label="系统单号" />
<el-table-column prop="status" label="订单状态">
<template slot-scope="scope">
{{ dict.label.asn_status[scope.row.status] }}
@ -79,15 +96,9 @@
</el-table-column>
<el-table-column prop="createTime" label="创建时间" />
<el-table-column prop="orderDate" label="订单时间" />
<el-table-column v-if="checkPer(['admin','asn:edit','asn:del'])" label="操作" align="center">
<el-table-column v-if="checkPer(['admin','asn:edit','asn:del'])" fixed="right" label="操作" align="center">
<template slot-scope="scope">
<!-- <udOperation
:data="scope.row"
:permission="permission"
>
</udOperation>-->
<el-button
slot="left"
v-permission="permission.add"
class="filter-item"
type="primary"
@ -152,13 +163,22 @@ export default {
this.$router.push({ path: '/business-data/asnDetail/asnDetail', query: { relatedBill1: relatedBill1 }})
},
startAsn(id) {
this.$confirm(`确定开始收货?`, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
crudAsn.startAsn(id).then(res => {
console.log('res:' + res)
if (res.status === 200) {
DonMessage.success(res.message)
} else {
DonMessage.error(res.message)
}
this.crud.notify(res.message,res.status)
this.crud.toQuery()
})
}).catch(() => {
DonMessage.success('收货失败!');
})
},
cancelAsn(id) {
crudAsn.cancelAsn(id).then(res => {
this.crud.notify(res.message,res.status)
this.crud.toQuery()
})
},

View File

@ -204,6 +204,7 @@
<el-table ref="table" height="68vh" v-loading="crud.loading" :data="crud.data" size="small" style="width: 100%;"
@selection-change="this.selectionChangeHandler" @row-click="this.clickRow" border>
<el-table-column prop="asn.relatedBill1" label="入库单号" width="100"/>
<el-table-column prop="asn.billType.name" label="单据类型" width="100"/>
<el-table-column prop="asn.status" label="入库单状态" width="100">
<template slot-scope="scope">
{{ dict.label.asn_status[scope.row.asn.status] }}
@ -224,6 +225,11 @@
<div>{{ scope.row.item.name }}</div>
</template>
</el-table-column>
<el-table-column :show-overflow-tooltip="true" prop="propC4" label="操作方式">
<template slot-scope="scope">
<div>{{ scope.row.propC4 }}</div>
</template>
</el-table-column>
<el-table-column prop="status" label="状态">
<template slot-scope="scope">
{{ dict.label.asn_status[scope.row.status] }}

View File

@ -52,8 +52,8 @@
</el-button>
</crudOperation>
<!--表单组件-->
<el-dialog title="人工入库" :visible.sync="ManualReceivingFlag" width="400px">
<el-form ref="fromBack" :model="fromManualReceiving" :rules="rules" size="small" label-width="80px">
<el-dialog title="人工入库" :visible.sync="ManualReceivingFlag" width="600px">
<el-form ref="fromBack" :inline="true" :model="fromManualReceiving" :rules="rules" size="mini" label-width="120px">
<!-- <el-form-item label="容器类型" prop="storageType">
<el-select v-model="fromBack.storageType" value-key="id" filterable placeholder="请选择">
<el-option
@ -65,10 +65,28 @@
</el-select>
</el-form-item>-->
<el-form-item label="RFID" prop="RFID">
<el-input v-model="fromManualReceiving.RFID" :rows="3" type="textarea" style="width: 270px;"/>
<el-input v-model="fromManualReceiving.RFID" :rows="3" type="textarea" style="width: 350px;" @change="devan_rfid()"/>
</el-form-item>
<el-form-item label="登记单号" prop="relatedBill2">
<el-input v-model="fromManualReceiving.relatedBill2" :disabled="true" style="width: 100px;"/>
</el-form-item>
<el-form-item label="系统单号" prop="relatedBill1">
<el-input v-model="fromManualReceiving.relatedBill1" :disabled="true" style="width: 100px;"/>
</el-form-item>
<el-form-item label="sku" prop="sku">
<el-input v-model="fromManualReceiving.sku" :disabled="true" style="width: 330px;"/>
</el-form-item>
<el-form-item label="明细行数" prop="lineNo">
<el-input v-model="fromManualReceiving.lineNos" :disabled="true" style="width: 100px;"/>
</el-form-item>
<el-form-item label="剩余订单数量" prop="orderQty">
<el-input v-model="fromManualReceiving.orderQty" :disabled="true" style="width: 100px;"/>
</el-form-item>
<el-form-item label="收货数量" prop="receivedQty">
<el-input v-model="fromManualReceiving.receivedQty" :disabled="true" style="width: 330px;"/>
</el-form-item>
<el-form-item label="目标库位" prop="RFID">
<el-select v-model="fromManualReceiving.pointId" clearable value-key="id" filterable placeholder="请选择" style="width: 270px;">
<el-select v-model="fromManualReceiving.pointId" clearable value-key="id" filterable placeholder="请选择" style="width: 330px;">
<el-option
v-for="item in pointList"
:key="item.id"
@ -119,7 +137,7 @@
</template>
</el-table-column>
<el-table-column prop="beSkip" label="是否AGV任务" />
<el-table-column prop="putCode" label="单品流水号" />
<el-table-column prop="putCode" :show-overflow-tooltip="true" label="单品流水号" />
<el-table-column prop="planQty" label="计划数量" />
<el-table-column prop="moveQty" label="移位数量" />
<el-table-column prop="itemKey.propC1" label="批次号" />
@ -140,7 +158,7 @@
</template>
<script>
import crudTask from '@/api/task'
import crudTask, { devanRfid } from '@/api/task'
import DonMessage from "@/utils/message";
import CRUD, { presenter, header, form, crud } from '@crud/crud'
import rrOperation from '@crud/RR.operation'
@ -151,6 +169,7 @@ import DateRangePicker from "@/components/DateRangePicker/index.vue";
import {getItemsList} from "@/api/item";
import {getPoints} from "@/api/point";
import {getStockTypes} from "@/api/stockType";
import {devan} from "@/api/inventory";
const defaultForm = { id: null, itemId: null,agvTask: null, itemKeyId: null, billCode: null, taskType: null, asnDetailId: null, moveDetailId: null, waveDetailId: null, pickDetailId: null, srcStockId: null, dstStockId: null, srcPoint: null, dstPoint: null, srcStockCode: null, dstStockCode: null, srcPointCode: null, dstPointCode: null, invStatus: null, taskStatus: null, beSkip: null, beBack: null, planQty: null, moveQty: null, putCode: null, invId: null, deptId: null, createBy: null, updateBy: null, createTime: null, updateTime: null }
export default {
@ -160,7 +179,7 @@ export default {
dicts: ['task_status','asn_status'],
cruds() {
return CRUD({
query: {taskType: ['ASN']},
query: {taskType: ['FC_RK']},
title: '收货任务',
url: 'api/task',
idField: 'id',
@ -200,13 +219,13 @@ export default {
itemListData: [],
pointList: [],
//
fromManualReceiving:{RFID:null,pointId:null}
fromManualReceiving:{ RFID:null,pointId:null }
}
},
mounted() {
//
this.itemDataGet();
this.getPoints();
this.getPoints(null);
},
methods: {
// false
@ -228,8 +247,18 @@ export default {
});
})
},
getPoints() {
getPoints({ }).then(res => {
// RFID
devan_rfid() {
console.log("解析RFID码")
devanRfid(this.fromManualReceiving.RFID).then(res => {
if (res.status === 200) {
this.fromManualReceiving = res.data
this.getPoints(res.data.billCode);
}
})
},
getPoints(billCode) {
getPoints(billCode+"").then(res => {
this.pointList= res.map(function(obj) {
if (obj.hasChildren) {
obj.children = null
@ -240,12 +269,7 @@ export default {
},
manualReceiving(){
crudTask.manualReceiving(this.fromManualReceiving).then(res => {
console.log('res:' + res.status)
if (res.status === 200) {
DonMessage.success(res.message)
} else {
DonMessage.error(res.message)
}
this.crud.notify(res.message, res.status)
this.crud.toQuery()
})
}

View File

@ -183,12 +183,14 @@
v-loading="crud.loading"
show-summary
:data="crud.data"
border
size="small"
style="width: 100%;"
height="70vh"
@selection-change="crud.selectionChangeHandler"
>
<el-table-column type="selection" width="55" />
<el-table-column prop="id" label="库存ID" />
<el-table-column :show-overflow-tooltip="true" prop="itemCode" label="物料编码">
<template slot-scope="scope">
<div>{{ scope.row.itemKey.item.code }}</div>

View File

@ -222,11 +222,11 @@
<el-form-item label="序列号">
<el-input v-model="form.propC3" style="width: 135px;" />
</el-form-item>
<el-form-item label="业务类型">
<el-form-item label="操作方式">
<el-select
v-model="form.propC4"
size="small"
placeholder="业务类型"
placeholder="操作方式"
class="filter-item"
style="width: 135px"
>

View File

@ -15,12 +15,12 @@
</el-input>
</el-form-item>
<el-form-item prop="code">
<el-input v-model="loginForm.code" auto-complete="off" placeholder="验证码" style="width: 63%" @keyup.enter.native="handleLogin">
<!-- <el-input v-model="loginForm.code" auto-complete="off" placeholder="验证码" style="width: 63%" @keyup.enter.native="handleLogin">
<svg-icon slot="prefix" icon-class="validCode" class="el-input__icon input-icon" />
</el-input>
<div class="login-code">
</el-input>-->
<!-- <div class="login-code">
<img :src="codeUrl" @click="getCode">
</div>
</div>-->
</el-form-item>
<el-checkbox v-model="loginForm.rememberMe" style="margin:0 0 25px 0;">
记住我
@ -65,7 +65,7 @@ export default {
loginRules: {
username: [{ required: true, trigger: 'blur', message: '用户名不能为空' }],
password: [{ required: true, trigger: 'blur', message: '密码不能为空' }],
code: [{ required: true, trigger: 'change', message: '验证码不能为空' }]
// code: [{ required: true, trigger: 'change', message: '' }]
},
loading: false,
redirect: undefined