APP
parent
bc06ef3de2
commit
e328915057
|
|
@ -24,6 +24,26 @@ export function updateInvQueuedQty(data) {
|
|||
})
|
||||
}
|
||||
|
||||
//制造入库
|
||||
export function zzrkInv(data) {
|
||||
return request({
|
||||
url: 'api/inventory/zzrkInv',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
//箱单移位
|
||||
export function xdMoveInv(data) {
|
||||
return request({
|
||||
url: 'api/inventory/xdMoveInv',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
export function del(ids) {
|
||||
return request({
|
||||
url: 'api/inventory/',
|
||||
|
|
@ -48,4 +68,11 @@ export function downloadXb(data) {
|
|||
})
|
||||
}
|
||||
|
||||
export default { add, edit, del,knywInventory,downloadXb}
|
||||
export function queryPickDetailXd(id) {
|
||||
return request({
|
||||
url: 'api/inventory/queryPickDetailXd?pickDetailId='+id ,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
|
||||
export default { add, edit, del,knywInventory,downloadXb,queryPickDetailXd,zzrkInv}
|
||||
|
|
|
|||
|
|
@ -40,9 +40,9 @@ export function allocatePickDetail(ids) {
|
|||
})
|
||||
}
|
||||
|
||||
export function cancelAllocate(ids) {
|
||||
export function cancelAllocatePickDetail(ids) {
|
||||
return request({
|
||||
url: 'api/pickDetail/cancelAllocate',
|
||||
url: 'api/pickDetail/cancelAllocatePickDetail',
|
||||
method: 'post',
|
||||
data: ids
|
||||
})
|
||||
|
|
@ -91,4 +91,4 @@ export function zzjl(data) {
|
|||
})
|
||||
}
|
||||
|
||||
export default { add, edit, del,allocatePickDetail,cancelAllocate,picking,pickBarBack,autoBcbl,sbPickdetail ,zzjl}
|
||||
export default { add, edit, del,allocatePickDetail,picking,pickBarBack,autoBcbl,sbPickdetail ,zzjl}
|
||||
|
|
|
|||
|
|
@ -27,7 +27,21 @@ export function add(data) {
|
|||
data
|
||||
})
|
||||
}
|
||||
export function xdckAllocate(data) {
|
||||
return request({
|
||||
url: 'api/pickTicket/xdckAllocate',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export function xdckCancelAllocate(data) {
|
||||
return request({
|
||||
url: 'api/pickTicket/xdckCancelAllocate',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
/**
|
||||
* 拣货操作
|
||||
* @param data
|
||||
|
|
@ -64,6 +78,19 @@ export function pickBatch(data) {
|
|||
data
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 拣货操作-箱单拣货
|
||||
* @param data
|
||||
* @returns {AxiosPromise}
|
||||
*/
|
||||
export function xdckPickOut(data) {
|
||||
return request({
|
||||
url: 'api/pickTicket/xdckPickOut',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
/**
|
||||
* 拣货操作-单一
|
||||
* @param data
|
||||
|
|
@ -196,4 +223,4 @@ export function xdckPick(data) {
|
|||
})
|
||||
}
|
||||
|
||||
export default { add, edit, del ,pickingOperations,queryDetails,shipmentRegistration,xppPickGoods,xbjsVerify,pickWhole,pickBatch,pickSingle,pickForXpp,xdckPick}
|
||||
export default { add, edit, del ,xdckPickOut,xdckAllocate,xdckCancelAllocate,pickingOperations,queryDetails,shipmentRegistration,xppPickGoods,xbjsVerify,pickWhole,pickBatch,pickSingle,pickForXpp,xdckPick}
|
||||
|
|
|
|||
|
|
@ -2,20 +2,6 @@
|
|||
<div>
|
||||
<el-button v-if="showEdit" v-permission="permission.edit" :loading="crud.status.cu === 2" :disabled="disabledEdit"
|
||||
size="mini" type="primary" icon="el-icon-edit" @click="crud.toEdit(data)"></el-button>
|
||||
|
||||
<el-button v-if="showContainerIn" :disabled="disabledContainerIn" size="mini"
|
||||
type="success" @click="toContainerIn(data)">入场
|
||||
</el-button>
|
||||
|
||||
<!-- 容器入场弹窗界面-->
|
||||
<ContainerIn ref="containerIn"/>
|
||||
|
||||
<el-button v-if="showContainerOut" :disabled="disabledContainerOut" size="mini"
|
||||
type="danger" @click="toContainerOut(data)">出场
|
||||
</el-button>
|
||||
|
||||
|
||||
|
||||
<el-popover v-model="pop" v-permission="permission.del" placement="top" width="180" trigger="manual"
|
||||
@show="onPopoverShow" @hide="onPopoverHide">
|
||||
<p>{{ msg }}</p>
|
||||
|
|
|
|||
|
|
@ -64,13 +64,8 @@
|
|||
<el-form-item label="接收担当">
|
||||
<el-input v-model="form.shdd" style="width: 370px;"/>
|
||||
</el-form-item>
|
||||
</el-form-item> -->
|
||||
<el-form-item label="描述">
|
||||
<el-input v-model="form.description" style="width: 370px;"/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="所属纳所">
|
||||
<!-- <el-input v-model="form.workingStation" style="width: 370px;" />-->
|
||||
<el-select v-model="form.workingStation" filterable placeholder="请选择" clearable>
|
||||
<el-option
|
||||
v-for="item in this.dict.station_type"
|
||||
|
|
@ -81,6 +76,12 @@
|
|||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
-->
|
||||
<el-form-item label="描述">
|
||||
<el-input v-model="form.description" style="width: 370px;"/>
|
||||
</el-form-item>
|
||||
|
||||
|
||||
|
||||
<div style="text-align: center;width: 100%;height: 30px;font-weight :bold">
|
||||
<el-checkbox label="线边接收" style="font-weight :bold" v-model="form.bexb"></el-checkbox>
|
||||
|
|
@ -101,12 +102,13 @@
|
|||
<el-table-column type="selection" width="55"/>
|
||||
<el-table-column prop="code" label="库区编号" width="80px" align="center"/>
|
||||
<el-table-column prop="name" label="库区名称" width="150px" align="center"/>
|
||||
<el-table-column prop="station_type#workingStation" label="指示纳所" width="150px">
|
||||
|
||||
<!-- <el-table-column prop="station_type#workingStation" label="指示纳所" width="150px">
|
||||
<template slot-scope="scope">
|
||||
{{ dict.label.station_type[scope.row.workingStation] }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- <el-table-column prop="pointCode" label="缓存库位"/>-->
|
||||
<el-table-column prop="pointCode" label="缓存库位"/>-->
|
||||
<!-- <el-table-column prop="posX" label="排序号">
|
||||
</el-table-column>
|
||||
<el-table-column prop="gcCode" label="接收工厂"/>
|
||||
|
|
|
|||
|
|
@ -8,6 +8,9 @@
|
|||
<el-input v-model="query.itemCode" clearable placeholder="部品品番" style="width: 185px;" class="filter-item" @keyup.enter.native="crud.toQuery" />
|
||||
<el-input v-model="query.itemName" clearable placeholder="部品品名" style="width: 185px;" class="filter-item" @keyup.enter.native="crud.toQuery" />
|
||||
<el-input v-model="query.ns" clearable placeholder="纳所" style="width: 185px;" class="filter-item" @keyup.enter.native="crud.toQuery" />
|
||||
<el-input v-model="query.bp_type" clearable placeholder="大小物" style="width: 185px;" class="filter-item" @keyup.enter.native="crud.toQuery" />
|
||||
<el-input v-model="query.tckw" clearable placeholder="台车" style="width: 185px;" class="filter-item" @keyup.enter.native="crud.toQuery" />
|
||||
<el-input v-model="query.supplier" clearable placeholder="供应商" style="width: 185px;" class="filter-item" @keyup.enter.native="crud.toQuery" />
|
||||
<!--<el-select v-model="query.rAreaCode" clearable placeholder="工位" filterable style="width: 185px;" class="filter-item"
|
||||
@keyup.enter.native="crud.toQuery" clearable>
|
||||
<el-option
|
||||
|
|
@ -218,7 +221,8 @@
|
|||
<el-table-column prop="bonded" label="税别"/>
|
||||
<el-table-column prop="ac" label="A/C" width="50"/>
|
||||
<el-table-column prop="contents" label="加工内容" width="70"/>
|
||||
<el-table-column prop="singles" label="单用" width="50"/>
|
||||
<el-table-column prop="kyQz" label="刻印前缀" width="70"/>
|
||||
<el-table-column prop="singles" label="台用量" width="70"/>
|
||||
<el-table-column prop="zcfq" label="制材分区" />
|
||||
<el-table-column prop="zPoint.area.name" label="库区" />
|
||||
<el-table-column prop="zPoint.code" label="货位" />
|
||||
|
|
|
|||
|
|
@ -113,7 +113,9 @@
|
|||
<el-table-column prop="code" label="品番" />
|
||||
<el-table-column prop="name" label="名称"/>
|
||||
<el-table-column prop="extendD3" label="收容数"/>
|
||||
<el-table-column prop="specs" label="规格"/>
|
||||
<el-table-column prop="ac" label="A/C"/>
|
||||
<el-table-column prop="contents" label="加工内容"/>
|
||||
<el-table-column prop="xz" label="箱种"/>
|
||||
<el-table-column prop="enabled" label="启用">
|
||||
<template slot-scope="scope">
|
||||
<el-switch
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@
|
|||
ref="upload"
|
||||
slot='right'
|
||||
style="float: right;padding-left: 5px"
|
||||
:action="baseApi+'/api/point/import_point'"
|
||||
:action="baseApi+'/api/importData/importPoint'"
|
||||
:file-list="fileList"
|
||||
:on-success=handleSuccess
|
||||
:on-error="handleError"
|
||||
|
|
@ -91,15 +91,15 @@
|
|||
<el-form-item label="代码" prop="code">
|
||||
<el-input v-model="form.code" style="width: 370px;"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="名称">
|
||||
<!--<el-form-item label="名称">
|
||||
<el-input v-model="form.name" style="width: 370px;"/>
|
||||
</el-form-item>
|
||||
</el-form-item>-->
|
||||
<el-form-item label="品番">
|
||||
<el-input v-model="form.itemCode" style="width: 370px;"/>
|
||||
</el-form-item>
|
||||
<!--<el-form-item label="纳所">
|
||||
<el-form-item label="纳所">
|
||||
<el-input v-model="form.beatCode" style="width: 370px;"/>
|
||||
</el-form-item>-->
|
||||
</el-form-item>
|
||||
<el-form-item label="类型" prop="type">
|
||||
<el-select v-model="form.type" filterable placeholder="请选择" style="width: 370px;"
|
||||
:default-first-option="true"
|
||||
|
|
@ -126,7 +126,9 @@
|
|||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
|
||||
<el-form-item label="库存下限">
|
||||
<el-input v-model="form.invMin" style="width: 370px;"/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="描述">
|
||||
<el-input type="textarea" v-model="form.description" style="width: 370px;"/>
|
||||
|
|
@ -146,9 +148,10 @@
|
|||
<el-table-column :show-overflow-tooltip="true" prop="area.name" label="库区">
|
||||
</el-table-column>
|
||||
<el-table-column prop="code" label="代码"/>
|
||||
<el-table-column prop="name" label="名称"/>
|
||||
<!-- <el-table-column prop="name" label="名称"/>-->
|
||||
<el-table-column prop="itemCode" label="品番"/>
|
||||
<!-- <el-table-column prop="beatCode" label="纳所"/>-->
|
||||
<el-table-column prop="beatCode" label="纳所"/>
|
||||
<el-table-column prop="invMin" label="库存下限"/>
|
||||
<el-table-column prop="point_type#type" label="类型">
|
||||
<template slot-scope="scope">
|
||||
{{ dict.label.point_type[scope.row.type] }}
|
||||
|
|
@ -213,7 +216,8 @@ const defaultForm = {
|
|||
name: null,
|
||||
description: null,
|
||||
area: null,
|
||||
point: null
|
||||
point: null,
|
||||
invMin:999
|
||||
}
|
||||
export default {
|
||||
name: 'Point',
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@
|
|||
<table class="label-table">
|
||||
<tr>
|
||||
<td class="td-item" style="width:25mm">纳所/品番</td>
|
||||
<td class="td-item-value" colspan="5" style="width:125mm">{{ k2.ns }}</td>
|
||||
<td class="td-item-value" colspan="5" style="width:125mm ;background: #fcd700">{{ k2.ns }}</td>
|
||||
<td class="td-item" style="width:15mm">箱种</td>
|
||||
<td class="td-item-value2" style="width:25mm">{{ k2.xz }}</td>
|
||||
</tr>
|
||||
|
|
@ -22,7 +22,7 @@
|
|||
</tr>
|
||||
<tr style="height: 13mm">
|
||||
<td class="td-item">货位</td>
|
||||
<td class="td-item-value" colspan="5">{{ k2.hw }}</td>
|
||||
<td class="td-item-value" colspan="5" style="background: #fcd700">{{ k2.hw }}</td>
|
||||
<td class="td-item" >税别</td>
|
||||
<td class="td-item-value2">{{ k2.bonded }}</td>
|
||||
</tr>
|
||||
|
|
@ -195,11 +195,9 @@ body {
|
|||
text-align: center;
|
||||
border: #000000 2px solid;
|
||||
font-size: 10pt;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap; /*不允许换行
|
||||
text-overflow: ellipsis;
|
||||
overflow: hidden;*/
|
||||
width: 10ch
|
||||
overflow: hidden;
|
||||
word-wrap: break-word;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@
|
|||
class="label-item" >
|
||||
<table class="label-table">
|
||||
<tr style="height: 6mm">
|
||||
<td class="td-item-value" colspan="2" style="width: 46mm">{{ k2.hw }}</td>
|
||||
<td class="td-item-value" colspan="2" style="width: 46mm;background:#fcd700">{{ k2.hw }}</td>
|
||||
<td class="td-item" rowspan="5" style="width: 23mm;height: 20mm;">
|
||||
<vue-qrcode
|
||||
:value="getQrContent(k2)"
|
||||
|
|
@ -21,7 +21,7 @@
|
|||
</td>
|
||||
</tr>
|
||||
<tr style="height: 6mm">
|
||||
<td class="td-item-value" colspan="2">{{ k2.code }}</td>
|
||||
<td class="td-item-value" colspan="2" style="width: 46mm;background:#fcd700">{{ k2.code }}</td>
|
||||
</tr>
|
||||
<tr style="height: 6mm">
|
||||
<td class="td-item-value" colspan="2">{{ k2.pm }}</td>
|
||||
|
|
@ -186,6 +186,9 @@ body {
|
|||
font-weight: bold;
|
||||
text-align: center;
|
||||
border: #000000 2px solid;
|
||||
overflow: hidden;
|
||||
word-wrap: break-word;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.qr-code {
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@
|
|||
</td>
|
||||
</tr>
|
||||
<tr style="height: 6mm">
|
||||
<td class="td-item-value" colspan="1">{{ k2.code }}</td>
|
||||
<td class="td-item-value" colspan="1" style="background: #fcd700">{{ k2.code }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
|
|
|||
|
|
@ -122,7 +122,7 @@
|
|||
<!-- 批量上架 -->
|
||||
<el-dialog title="批量上架" :visible.sync="mutilPutawayVisible" width="500px">
|
||||
<el-form ref="plsjForm" :model="plsjForm" label-width="80px">
|
||||
<el-form-item label="库位" prop="pointId" :rules="[{ required: true, message: '库位不能为空'}]">
|
||||
<!--<el-form-item label="库位" prop="pointId" :rules="[{ required: true, message: '库位不能为空'}]">
|
||||
<el-select v-model="plsjForm.pointId" value-key="id" placeholder="请选择库位" style="width: 250px">
|
||||
<el-option
|
||||
v-for="(item,index) in pointOptions"
|
||||
|
|
@ -132,6 +132,10 @@
|
|||
>
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>-->
|
||||
|
||||
<el-form-item label="库位" prop="point" :rules=" { required: true, message: '库位不能为空', trigger: 'blur' }">
|
||||
<PointSelect v-model="plsjForm.point" :value-key="'id'" :point_type="'CH'" @change="getChangeVule"/>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
|
|
@ -298,6 +302,8 @@ import {queryItemAll} from '@/api/item'
|
|||
import {formatDate} from '@/utils/commonUtils'
|
||||
import UploadExcelComponent from '@/components/UploadExcel/index.vue'
|
||||
import {cancelReceiv} from "@/api/xppRecord";
|
||||
import BomAccountPointSelect from "@/views/generic-component/BomAccountPointSelect.vue";
|
||||
import PointSelect from "@/views/generic-component/PointSelect.vue";
|
||||
|
||||
const defaultForm = {
|
||||
id: null,
|
||||
|
|
@ -329,7 +335,10 @@ const defaultForm = {
|
|||
}
|
||||
export default {
|
||||
name: 'Asn',
|
||||
components: {pagination, crudOperation, rrOperation, udOperation, DateRangePicker, UploadExcelComponent},
|
||||
components: {
|
||||
PointSelect,
|
||||
BomAccountPointSelect,
|
||||
pagination, crudOperation, rrOperation, udOperation, DateRangePicker, UploadExcelComponent},
|
||||
mixins: [presenter(), header(), form(defaultForm), crud()],
|
||||
dicts: ['asn_status'],
|
||||
cruds() {
|
||||
|
|
@ -575,15 +584,20 @@ export default {
|
|||
},
|
||||
//批量上架
|
||||
mutilPutawayBtn(data) {
|
||||
console.log(data)
|
||||
let data_ = this.plsjForm;
|
||||
data_.ids = data.map(v => v.id);
|
||||
data_.pointId=this.plsjForm.pointId.id;
|
||||
data_.pointId=this.plsjForm.pointId;
|
||||
console.log(this.plsjForm)
|
||||
mutilPutawaySys(data_).then(res=>{
|
||||
this.crud.toQuery()
|
||||
this.$message.success(res)
|
||||
this.mutilPutawayVisible = false
|
||||
})
|
||||
},
|
||||
getChangeVule(dben) {
|
||||
this.plsjForm.pointId = dben.id;
|
||||
},
|
||||
|
||||
|
||||
// 导入相关方法
|
||||
|
|
|
|||
|
|
@ -229,16 +229,8 @@
|
|||
<el-form-item label="现品票" prop="ewm">
|
||||
<el-input v-model="collectFrom.ewm" :rows="3" type="textarea" style="width: 270px;"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="库位" prop="stock">
|
||||
<el-select v-model="collectFrom.point" value-key="id" filterable placeholder="请选择库位"
|
||||
style="width: 200px;">
|
||||
<el-option
|
||||
v-for="item in pointList"
|
||||
:key="item.id"
|
||||
:label="item.code"
|
||||
:value="item"
|
||||
/>
|
||||
</el-select>
|
||||
<el-form-item label="库位" prop="point" :rules=" { required: true, message: '库位不能为空', trigger: 'blur' }">
|
||||
<PointSelect v-model="collectFrom.point" :value-key="'id'" :point_type="'CH'" @change="getChangeVule"/>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
|
|
@ -366,6 +358,7 @@ import { formatDate } from '@/utils/commonUtils'
|
|||
import DateRangePicker from "@/components/DateRangePicker/index.vue";
|
||||
import {mapGetters} from "vuex";
|
||||
import {queryPointList} from "@/api/point";
|
||||
import PointSelect from "@/views/generic-component/PointSelect.vue";
|
||||
|
||||
const defaultForm = {
|
||||
tfLy:null,
|
||||
|
|
@ -417,7 +410,7 @@ const defaultForm = {
|
|||
}
|
||||
export default {
|
||||
name: 'XppRecord',
|
||||
components: {DateRangePicker, pagination, crudOperation, rrOperation, udOperation },
|
||||
components: {PointSelect, DateRangePicker, pagination, crudOperation, rrOperation, udOperation },
|
||||
mixins: [presenter(), header(), form(defaultForm), crud()],
|
||||
cruds() {
|
||||
return CRUD({
|
||||
|
|
@ -503,7 +496,7 @@ export default {
|
|||
console.log(this.collectFrom)
|
||||
let date_ = {ewm: null, pointId: null,bomId:null};
|
||||
date_.ewm = this.collectFrom.ewm;
|
||||
date_.pointId = this.collectFrom.point.id;
|
||||
date_.pointId = this.collectFrom.pointId;
|
||||
date_.bomId=this.collectFrom.bomId;
|
||||
date_.type="1001";
|
||||
console.log(date_)
|
||||
|
|
@ -518,6 +511,9 @@ export default {
|
|||
}).catch(() => {
|
||||
})
|
||||
},
|
||||
getChangeVule(dben) {
|
||||
this.collectFrom.pointId = dben.id;
|
||||
},
|
||||
//重置表单
|
||||
resetForm() {
|
||||
this.$refs['collectFrom'].resetFields()
|
||||
|
|
|
|||
|
|
@ -67,9 +67,9 @@
|
|||
@click="collectFromFlag = true"
|
||||
icon="el-icon-document-add"
|
||||
>
|
||||
制造现品票上架
|
||||
制造投料
|
||||
</el-button>
|
||||
<el-button
|
||||
<!-- <el-button
|
||||
slot="right"
|
||||
v-permission="permission.cancelPut"
|
||||
class="filter-item"
|
||||
|
|
@ -78,13 +78,13 @@
|
|||
:disabled="crud.selections.length <= 0"
|
||||
@click="cancelPutM(crud.selections)"
|
||||
>
|
||||
现品票取消上架
|
||||
</el-button>
|
||||
现品票取消
|
||||
</el-button>-->
|
||||
|
||||
</crudOperation>
|
||||
<!--表单组件-->
|
||||
<!-- 二维码采集上架-->
|
||||
<el-dialog title="制造现品票上架" :visible.sync="collectFromFlag" width="400px">
|
||||
<el-dialog title="制造投料" :visible.sync="collectFromFlag" width="400px">
|
||||
<el-form ref="collectFrom" :model="collectFrom" :rules="rules" size="small" label-width="80px">
|
||||
<el-form-item label="现品票" prop="ewm">
|
||||
<el-input v-model="collectFrom.ewm" :rows="3" type="textarea" style="width: 270px;"/>
|
||||
|
|
|
|||
|
|
@ -158,6 +158,7 @@
|
|||
<el-button type="primary" @click="updateInvQueuedQtyBtn(zysForm)">确 定</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
|
||||
<!--表单组件-->
|
||||
<el-dialog :close-on-click-modal="false" :before-close="crud.cancelCU" :visible.sync="crud.status.cu > 0"
|
||||
:title="'库存修改'" width="520px"
|
||||
|
|
@ -258,6 +259,8 @@ import { manualGeneration } from '@/api/productionPlan'
|
|||
import { formatDate } from '@/utils/commonUtils'
|
||||
import { getAreas } from '@/api/area'
|
||||
import crudPickTicket from "@/api/pickTicket";
|
||||
import BomAccountPointSelect from "@/views/generic-component/BomAccountPointSelect.vue";
|
||||
import {zzjl} from "@/api/pickDetail";
|
||||
const defaultForm = {
|
||||
id: null,
|
||||
billCode: null,
|
||||
|
|
@ -285,7 +288,7 @@ const defaultForm = {
|
|||
}
|
||||
export default {
|
||||
name: 'Inventory',
|
||||
components: { pagination, crudOperation, rrOperation, udOperation },
|
||||
components: {BomAccountPointSelect, pagination, crudOperation, rrOperation, udOperation },
|
||||
mixins: [presenter(), header(), form(defaultForm), crud()],
|
||||
cruds() {
|
||||
return CRUD({
|
||||
|
|
@ -339,7 +342,8 @@ export default {
|
|||
zys: 0,
|
||||
description:null
|
||||
},
|
||||
pointOptions: []
|
||||
pointOptions: [],
|
||||
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
|
|
|
|||
|
|
@ -58,6 +58,17 @@
|
|||
@click="downXbBtn()"
|
||||
>导出
|
||||
</el-button>
|
||||
<el-button
|
||||
slot="right"
|
||||
v-permission="permission.xdMove"
|
||||
class="filter-item"
|
||||
type="primary"
|
||||
size="mini"
|
||||
@click="xdMoveFromFlag = true"
|
||||
icon="el-icon-document-add"
|
||||
>
|
||||
箱单移位
|
||||
</el-button>
|
||||
</crudOperation>
|
||||
<el-dialog
|
||||
title="库内移位"
|
||||
|
|
@ -114,6 +125,21 @@
|
|||
<el-button type="primary" @click="planPickSaveM(inventoryButton)">确 定</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
<!-- 箱单移位-->
|
||||
<el-dialog title="箱单移位" :visible.sync="xdMoveFromFlag" width="400px">
|
||||
<el-form ref="xdMoveFrom" :model="xdMoveFrom" :rules="rules" size="small" label-width="80px">
|
||||
<el-form-item label="箱单号" prop="stockCode">
|
||||
<el-input v-model="xdMoveFrom.stockCode" :rows="3" type="textarea" style="width: 270px;"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="库位" prop="point" :rules=" { required: true, message: '库位不能为空', trigger: 'blur' }">
|
||||
<PointSelect v-model="xdMoveFrom.point" :value-key="'id'" :point_type="'CH'" @change="getChangeVule"/>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button @click="xdMoveFromFlag= false">取 消</el-button>
|
||||
<el-button type="primary" @click="xdMoveBtn">确 定</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
<!--表单组件-->
|
||||
<el-dialog :close-on-click-modal="false" :before-close="crud.cancelCU" :visible.sync="crud.status.cu > 0"
|
||||
:title="'库存修改'" width="520px"
|
||||
|
|
@ -192,7 +218,7 @@
|
|||
</template>
|
||||
|
||||
<script>
|
||||
import crudInventory, { knywInventory } from '@/api/inventory'
|
||||
import crudInventory, { knywInventory,xdMoveInv } from '@/api/inventory'
|
||||
import CRUD, { presenter, header, form, crud } from '@crud/crud'
|
||||
import { getItems } from '@/api/item'
|
||||
import rrOperation from '@crud/RR.operation.vue'
|
||||
|
|
@ -205,6 +231,8 @@ import { formatDate } from '@/utils/commonUtils'
|
|||
import { getAreas } from '@/api/area'
|
||||
import {download} from "@/api/data";
|
||||
import {downloadFile} from "@/utils";
|
||||
import PointSelect from "@/views/generic-component/PointSelect.vue";
|
||||
import crudAsnDetail from "@/api/asnDetail";
|
||||
const defaultForm = {
|
||||
id: null,
|
||||
billCode: null,
|
||||
|
|
@ -232,7 +260,7 @@ const defaultForm = {
|
|||
}
|
||||
export default {
|
||||
name: 'InvXt',
|
||||
components: { pagination, crudOperation, rrOperation, udOperation },
|
||||
components: {PointSelect, pagination, crudOperation, rrOperation, udOperation },
|
||||
mixins: [presenter(), header(), form(defaultForm), crud()],
|
||||
cruds() {
|
||||
return CRUD({
|
||||
|
|
@ -263,7 +291,8 @@ export default {
|
|||
permission: {
|
||||
add: ['admin', 'inventory:add'],
|
||||
edit: ['admin', 'inventory:edit'],
|
||||
del: ['admin', 'inventory:del']
|
||||
del: ['admin', 'inventory:del'],
|
||||
xdMove: ['admin', 'inventory:xdMove']
|
||||
},
|
||||
rules: {
|
||||
quantity: { required: true, message: '调整后必填', trigger: 'blur' },
|
||||
|
|
@ -281,7 +310,9 @@ export default {
|
|||
rmNumber: 0
|
||||
}
|
||||
},
|
||||
pointOptions: []
|
||||
pointOptions: [],
|
||||
xdMoveFromFlag: false,
|
||||
xdMoveFrom: { stockCode: null,point:null,pointId:null},
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
|
|
@ -364,6 +395,24 @@ export default {
|
|||
this.crud.downloadLoading = false
|
||||
})
|
||||
},
|
||||
xdMoveBtn() {
|
||||
let date_ = {stockCode: null, pointId: null};
|
||||
date_.stockCode = this.xdMoveFrom.stockCode;
|
||||
date_.pointId = this.xdMoveFrom.pointId;
|
||||
xdMoveInv(date_).then(res => {
|
||||
if (res.status == 200) {
|
||||
this.crud.notify(res.message, CRUD.NOTIFICATION_TYPE.SUCCESS)
|
||||
}
|
||||
this.xdMoveFromFlag = false
|
||||
this.crud.toQuery()
|
||||
this.resetForm()
|
||||
|
||||
}).catch(() => {
|
||||
})
|
||||
},
|
||||
getChangeVule(dben) {
|
||||
this.xdMoveFrom.pointId = dben.id;
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
|
|
|||
|
|
@ -53,6 +53,16 @@
|
|||
@click="downXbBtn()"
|
||||
>导出
|
||||
</el-button>
|
||||
<el-button
|
||||
slot="right"
|
||||
class="filter-item"
|
||||
type="primary"
|
||||
size="mini"
|
||||
@click="cxjlFromFlag = true"
|
||||
icon="el-icon-document-add"
|
||||
>
|
||||
制造入库
|
||||
</el-button>
|
||||
</crudOperation>
|
||||
<el-dialog
|
||||
title="库内移位"
|
||||
|
|
@ -134,6 +144,37 @@
|
|||
<el-button :loading="crud.status.cu === 2" type="primary" @click="crud.submitCU">确认</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
<!--表单组件-->
|
||||
<el-dialog title="制造入库" :visible.sync="cxjlFromFlag" width="500px" >
|
||||
<el-form ref="cxjlFrom" :model="cxjlFrom" :rules="rules" size="small" label-width="80px">
|
||||
<el-form-item label="制造库位" prop="zzkwCode" :rules=" { required: true, message: '制造库位不能为空', trigger: 'blur' }">
|
||||
<BomAccountPointSelect v-model="cxjlFrom.zzkw_code" :value-key="'bom_account_id'" @change="getChangeVule"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="品番">
|
||||
<el-input v-model="cxjlFrom.item_code" />
|
||||
</el-form-item>
|
||||
<el-form-item label="品名">
|
||||
<el-input v-model="cxjlFrom.item_name" />
|
||||
</el-form-item>
|
||||
<el-form-item label="数量">
|
||||
<el-input v-model="cxjlFrom.order_qty" />
|
||||
</el-form-item>
|
||||
<!--<el-form-item label="指示工厂">
|
||||
<el-input v-model="cxjlFrom.gw_code" />
|
||||
</el-form-item>-->
|
||||
<el-form-item label="库区">
|
||||
<el-input v-model="cxjlFrom.gw_name" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="备注">
|
||||
<el-input v-model="cxjlFrom.remark" :rows="3" type="textarea" style="width: 370px;"/>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="text" @click="cxjlFromFlag=false">取消</el-button>
|
||||
<el-button type="primary" @click="btnZzjl">入库确认</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
<!--表格渲染-->
|
||||
<el-table
|
||||
ref="table" :height="crud.tableHeight" border
|
||||
|
|
@ -156,6 +197,12 @@
|
|||
<!--<el-table-column prop="zzkw.code" label="制造库位" align="center"/>
|
||||
<el-table-column prop="area.pointCode" label="缓存库位" align="center"/>-->
|
||||
<el-table-column prop="itemKey.propC2" label="税别"/>
|
||||
<el-table-column prop="point.invMin" label="库存下限">
|
||||
<template slot-scope="scope">
|
||||
<div v-if="scope.row.point.invMin>scope.row.quantity" style="background: #ff9292">{{ scope.row.point.invMin }}</div>
|
||||
<div v-if="scope.row.point.invMin<=scope.row.quantity">{{ scope.row.point.invMin }}</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column v-if="checkPer(['admin','fileManagement:edit','fileManagement:del'])" label="操作"
|
||||
width="150px" align="center" fixed="right"
|
||||
>
|
||||
|
|
@ -187,7 +234,7 @@
|
|||
</template>
|
||||
|
||||
<script>
|
||||
import crudInventory, {downXb, knywInventory} from '@/api/inventory'
|
||||
import crudInventory, {downXb, knywInventory,zzrkInv} from '@/api/inventory'
|
||||
import CRUD, { presenter, header, form, crud } from '@crud/crud'
|
||||
import { getItems } from '@/api/item'
|
||||
import rrOperation from '@crud/RR.operation.vue'
|
||||
|
|
@ -200,6 +247,8 @@ import { formatDate } from '@/utils/commonUtils'
|
|||
import { getAreas ,queryAreaList} from '@/api/area'
|
||||
import {download} from "@/api/data";
|
||||
import {downloadFile} from "@/utils";
|
||||
import BomAccountPointSelect from "@/views/generic-component/BomAccountPointSelect.vue";
|
||||
import {zzjl} from "@/api/pickDetail";
|
||||
const defaultForm = {
|
||||
id: null,
|
||||
billCode: null,
|
||||
|
|
@ -227,7 +276,7 @@ const defaultForm = {
|
|||
}
|
||||
export default {
|
||||
name: 'InvZz',
|
||||
components: { pagination, crudOperation, rrOperation, udOperation },
|
||||
components: {BomAccountPointSelect, pagination, crudOperation, rrOperation, udOperation },
|
||||
mixins: [presenter(), header(), form(defaultForm), crud()],
|
||||
cruds() {
|
||||
return CRUD({
|
||||
|
|
@ -277,7 +326,10 @@ export default {
|
|||
rmNumber: 0
|
||||
}
|
||||
},
|
||||
pointOptions: []
|
||||
pointOptions: [],
|
||||
cxjlFromFlag: false,
|
||||
cxjlFrom: { bom_account_id: null,order_qty:0, item_code:null, item_name:null, zzkw_id:null, zzkw_code:null, gw_code:null, gw_name:null, status:null, remark:null,srs:0 }
|
||||
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
|
|
@ -357,6 +409,29 @@ export default {
|
|||
this.areaOptions = res
|
||||
})
|
||||
},
|
||||
getChangeVule(dben) {
|
||||
this.cxjlFrom.order_qty=dben.srs;
|
||||
this.cxjlFrom.item_code=dben.item_code;
|
||||
this.cxjlFrom.item_name=dben.item_name;
|
||||
this.cxjlFrom.gw_code=dben.gw_code;
|
||||
this.cxjlFrom.gw_name=dben.gw_name;
|
||||
this.cxjlFrom.bom_account_id=dben.bom_account_id
|
||||
this.cxjlFrom.item_id=dben.item_id;
|
||||
this.cxjlFrom.zzkw_id=dben.zzkw_id;
|
||||
this.cxjlFrom.rk_id=dben.rk_id;
|
||||
},
|
||||
|
||||
btnZzjl() {
|
||||
zzrkInv(this.cxjlFrom).then(res => {
|
||||
if (res.status == 200) {
|
||||
this.crud.notify(res.message, CRUD.NOTIFICATION_TYPE.SUCCESS)
|
||||
}
|
||||
this.cxjlFromFlag = false
|
||||
this.crud.toQuery()
|
||||
this.resetForm()
|
||||
}).catch(() => {
|
||||
})
|
||||
},
|
||||
//日期格式化
|
||||
getFormatDate(data){
|
||||
return formatDate(data);
|
||||
|
|
|
|||
|
|
@ -73,11 +73,11 @@
|
|||
<el-table-column prop="srcPointCode" label="源库位" width="80px" align="center"/>
|
||||
<!-- <el-table-column prop="srcStockCode" label="源容器号"/>-->
|
||||
<el-table-column prop="dstPointCode" label="目标库位" width="80px" align="center"/>
|
||||
<el-table-column prop="zckw.code" label="暂存库位" width="80px" align="center">
|
||||
<!--<el-table-column prop="zckw.code" label="暂存库位" width="80px" align="center">
|
||||
</el-table-column>
|
||||
<el-table-column prop="zzkw.code" label="制造库位" width="80px" align="center">
|
||||
</el-table-column>
|
||||
<el-table-column prop="dstStockCode" label="托盘号" align="center"/>
|
||||
</el-table-column>-->
|
||||
<el-table-column prop="dstStockCode" label="箱单数" align="center"/>
|
||||
<el-table-column prop="srcQty" label="源数量" width="80px"/>
|
||||
<el-table-column prop="dstQty" label="目标数量" width="80px"/>
|
||||
<!-- 发生数量-->
|
||||
|
|
|
|||
|
|
@ -35,7 +35,6 @@
|
|||
<crudOperation :permission="permission" :tableKey="this.$options.name">
|
||||
<el-button
|
||||
slot="right"
|
||||
v-permission="permission.cxjl"
|
||||
class="filter-item"
|
||||
type="primary"
|
||||
size="mini"
|
||||
|
|
@ -47,20 +46,27 @@
|
|||
<el-button
|
||||
slot="right"
|
||||
class="filter-item"
|
||||
type="success"
|
||||
icon="el-icon-edit"
|
||||
type="primary"
|
||||
size="mini"
|
||||
:disabled="show_fp"
|
||||
@click="btnAllocate(crud.selections)"
|
||||
icon="el-icon-document-add"
|
||||
>
|
||||
自动分配
|
||||
分配
|
||||
</el-button>
|
||||
<el-button
|
||||
slot="right"
|
||||
class="filter-item"
|
||||
type="success"
|
||||
size="mini"
|
||||
@click="btnCancelAllocate(crud.selections)"
|
||||
>
|
||||
取消分配
|
||||
</el-button>
|
||||
|
||||
<el-button
|
||||
slot="right"
|
||||
class="filter-item"
|
||||
type="danger"
|
||||
icon="el-icon-edit"
|
||||
type="primary"
|
||||
size="mini"
|
||||
:loading="crud.delAllLoading"
|
||||
:disabled="show_jh"
|
||||
|
|
@ -69,6 +75,18 @@
|
|||
拣货确认
|
||||
</el-button>
|
||||
|
||||
<el-button
|
||||
slot="right"
|
||||
class="filter-item"
|
||||
type="primary"
|
||||
size="mini"
|
||||
:loading="crud.delAllLoading"
|
||||
:disabled="show_fp"
|
||||
@click="getPickDetailInv(crud.selections[0].id)"
|
||||
>
|
||||
箱单拣货确认
|
||||
</el-button>
|
||||
|
||||
</crudOperation>
|
||||
<el-table ref="table" v-loading="crud.loading" :data="crud.data" size="small"
|
||||
style="width: 100%;"
|
||||
|
|
@ -101,11 +119,7 @@
|
|||
<el-table-column prop="remark" label="备注"/>
|
||||
|
||||
<el-table-column prop="createBy" label="创建人"/>
|
||||
<el-table-column prop="createTime" width="150px" label="创建时间">
|
||||
<template slot-scope="scope">
|
||||
{{getFormatDate(scope.row.createTime)}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="createTime" width="150px" label="创建时间"/>
|
||||
<el-table-column label="操作" width="150px" align="center">
|
||||
|
||||
<template slot-scope="scope">
|
||||
|
|
@ -128,6 +142,7 @@
|
|||
</el-table>
|
||||
<!--拣货确认界面-->
|
||||
<PickTask ref="pickTask"/>
|
||||
<XdTask ref="xdTask"/>
|
||||
|
||||
<!--表单组件-->
|
||||
<el-dialog title="产线叫料" :visible.sync="cxjlFromFlag" width="500px" >
|
||||
|
|
@ -171,18 +186,21 @@
|
|||
</template>
|
||||
|
||||
<script>
|
||||
import crudPickDetail,{zzjl,allocatePickDetail} from '@/api/pickDetail'
|
||||
import crudPickDetail,{zzjl,allocatePickDetail,cancelAllocatePickDetail} from '@/api/pickDetail'
|
||||
import CRUD, {presenter, header, form, crud} from '@crud/crud'
|
||||
import rrOperation from '@crud/RR.operation.vue'
|
||||
import crudOperation from '@crud/CRUD.operation.vue'
|
||||
import udOperation from '@crud/UD.operation.vue'
|
||||
import pagination from '@crud/Pagination.vue'
|
||||
import {queryBomAccountPoints} from "@/api/bomAccount"
|
||||
import {getItems} from "@/api/item"
|
||||
import PickTask from "@/views/business-pick/pickDetail/pickTicketTask.vue"
|
||||
import XdTask from "@/views/business-pick/pickDetail/xdTask.vue"
|
||||
import DateRangePicker from "@/components/DateRangePicker/index.vue";
|
||||
import { formatDate } from '@/utils/commonUtils'
|
||||
import ItemSelect from "@/views/generic-component/ItemSelect.vue";
|
||||
import BomAccountPointSelect from "@/views/generic-component/BomAccountPointSelect.vue";
|
||||
import {queryPickDetailXd} from "@/api/inventory";
|
||||
|
||||
const defaultForm = {
|
||||
id: null,
|
||||
|
|
@ -191,6 +209,7 @@ const defaultForm = {
|
|||
export default {
|
||||
name: 'PickDetail',
|
||||
components: {
|
||||
XdTask,
|
||||
BomAccountPointSelect,
|
||||
ItemSelect, DateRangePicker, PickTask,pagination, crudOperation, rrOperation, udOperation},
|
||||
mixins: [presenter(), header(), form(defaultForm), crud()],
|
||||
|
|
@ -203,7 +222,7 @@ export default {
|
|||
sort: 'id,desc',
|
||||
crudMethod: {...crudPickDetail},
|
||||
optShow: {
|
||||
add: true,
|
||||
add: false,
|
||||
edit: false,
|
||||
del: false,
|
||||
reset: false,
|
||||
|
|
@ -221,7 +240,7 @@ export default {
|
|||
cxjlFromFlag: false,
|
||||
cxjlFrom: { bom_account_id: null,order_qty:0, item_code:null, item_name:null, zzkw_id:null, zzkw_code:null, gw_code:null, gw_name:null, status:null, remark:null,srs:0 },
|
||||
permission: {
|
||||
del: ['admin', 'pickDetail:del']
|
||||
|
||||
},
|
||||
rules: {
|
||||
item: [
|
||||
|
|
@ -239,7 +258,6 @@ export default {
|
|||
mounted() {
|
||||
//初始化数据
|
||||
this.getItem();
|
||||
this.itemDataGet();
|
||||
},
|
||||
methods: {
|
||||
// 钩子:在获取表格数据之前执行,false 则代表不获取数据
|
||||
|
|
@ -296,29 +314,34 @@ export default {
|
|||
|
||||
},
|
||||
btnAllocate(datas) {
|
||||
this.$confirm(`选中的${datas.length}条数据分配确认?`, '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
const ids = [];
|
||||
for (let i = 0; i < datas.length; i++) {
|
||||
ids.push(datas[i].id)
|
||||
}
|
||||
console.log(ids)
|
||||
allocatePickDetail(ids).then(res => {
|
||||
if (res.status == 200) {
|
||||
this.crud.notify(res.message, CRUD.NOTIFICATION_TYPE.SUCCESS)
|
||||
}
|
||||
this.crud.toQuery()
|
||||
}).catch(() => {
|
||||
})
|
||||
},
|
||||
btnCancelAllocate(datas) {
|
||||
const ids = [];
|
||||
for (let i = 0; i < datas.length; i++) {
|
||||
ids.push(datas[i].id)
|
||||
}
|
||||
console.log(ids)
|
||||
cancelAllocatePickDetail(ids).then(res => {
|
||||
this.crud.toQuery()
|
||||
})
|
||||
},
|
||||
getPickTask(id) {
|
||||
this.$refs.pickTask.dialog = true
|
||||
this.$refs.pickTask.queryPickTask(id)
|
||||
},
|
||||
|
||||
getPickDetailInv(id) {
|
||||
this.$refs.xdTask.dialog = true
|
||||
this.$refs.xdTask.queryPickDetailXd(id)
|
||||
},
|
||||
shuaxin() {
|
||||
this.crud.toQuery();
|
||||
},
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
<div class="head-container">
|
||||
<!-- 导出 -->
|
||||
<div style="display: inline-block;">
|
||||
<el-button
|
||||
<!-- <el-button
|
||||
:loading="downloadLoading"
|
||||
size="mini"
|
||||
class="filter-item"
|
||||
|
|
@ -13,17 +13,6 @@
|
|||
@click="downloadMethod"
|
||||
>导出
|
||||
</el-button>
|
||||
|
||||
<el-button
|
||||
:loading="downloadLoading"
|
||||
size="mini"
|
||||
class="filter-item"
|
||||
type="primary"
|
||||
icon="el-icon-lollipop"
|
||||
@click="picking"
|
||||
>整单拣货
|
||||
</el-button>
|
||||
|
||||
<el-button
|
||||
:loading="downloadLoading"
|
||||
size="mini"
|
||||
|
|
@ -33,17 +22,24 @@
|
|||
@click="pickBarBack"
|
||||
>整单退拣
|
||||
</el-button>
|
||||
-->
|
||||
<el-button
|
||||
:loading="downloadLoading"
|
||||
size="mini"
|
||||
class="filter-item"
|
||||
type="primary"
|
||||
icon="el-icon-lollipop"
|
||||
@click="singlePick"
|
||||
>整单拣货
|
||||
</el-button>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<!--表格渲染-->
|
||||
<el-table v-loading="loading" :data="data" style="width: 100%;margin-top: -10px;">
|
||||
<el-table-column type="index" :index="indexMethod" label="序号"/>
|
||||
<el-table-column :show-overflow-tooltip="true" prop="itemCode" label="任务号">
|
||||
<template slot-scope="scope">
|
||||
<div>{{ scope.row.pickDetail.po }}</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column :show-overflow-tooltip="true" prop="itemCode" label="物料编码">
|
||||
<template slot-scope="scope">
|
||||
<div>{{ scope.row.item.code }}</div>
|
||||
|
|
@ -54,10 +50,10 @@
|
|||
<div>{{ scope.row.item.name }}</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="srcStockCode" label="容器"/>
|
||||
<el-table-column prop="srcStockCode" label="箱单号"/>
|
||||
|
||||
<el-table-column prop="srcPointCode" label="原点位"/>
|
||||
<el-table-column prop="dstPointCode" label="目标点位"/>
|
||||
<!--<el-table-column prop="dstPointCode" label="目标点位"/>-->
|
||||
|
||||
<el-table-column prop="planQty" label="分配数量"/>
|
||||
<el-table-column prop="moveQty" label="拣货数量"/>
|
||||
|
|
@ -87,6 +83,7 @@ import {queryPickTask} from "@/api/task";
|
|||
import crudPickDetail from "@/api/pickDetail";
|
||||
import DonMessage from "@/utils/message";
|
||||
import CRUD from '@crud/crud'
|
||||
import {pickWhole} from "@/api/pickTicket";
|
||||
|
||||
export default {
|
||||
components: {DateRangePicker},
|
||||
|
|
@ -117,23 +114,12 @@ export default {
|
|||
indexMethod(index) {
|
||||
return index * 1 + 1;
|
||||
},
|
||||
picking() {
|
||||
this.$confirm(`确认整单拣货?`, '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
|
||||
//整单拣货
|
||||
singlePick() {
|
||||
crudPickDetail.picking(this.pickDetailId).then(res => {
|
||||
this.$parent.crud.notify('拣货成功!', CRUD.NOTIFICATION_TYPE.SUCCESS);
|
||||
this.$message.success(res)
|
||||
this.queryPickTask(this.pickDetailId)
|
||||
}).catch(() => {
|
||||
|
||||
})
|
||||
|
||||
}).catch(() => {
|
||||
this.$parent.notify('取消成功!', CRUD.NOTIFICATION_TYPE.SUCCESS);
|
||||
});
|
||||
},
|
||||
pickBarBack() {
|
||||
this.$confirm(`确认整单退拣?`, '提示', {
|
||||
|
|
|
|||
|
|
@ -0,0 +1,150 @@
|
|||
<template>
|
||||
<el-dialog :visible.sync="dialog" :before-close="handleClose" append-to-body title="拣货确认-箱单库存记录" width="88%" top="20px">
|
||||
<!-- 搜索 -->
|
||||
<div class="head-container">
|
||||
<!-- 导出 -->
|
||||
<div style="display: inline-block;">
|
||||
<!-- <el-button
|
||||
:loading="downloadLoading"
|
||||
size="mini"
|
||||
class="filter-item"
|
||||
type="warning"
|
||||
icon="el-icon-download"
|
||||
@click="downloadMethod"
|
||||
>导出
|
||||
</el-button>
|
||||
<el-button
|
||||
:loading="downloadLoading"
|
||||
size="mini"
|
||||
class="filter-item"
|
||||
type="primary"
|
||||
icon="el-icon-potato-strips"
|
||||
@click="pickBarBack"
|
||||
>整单退拣
|
||||
</el-button>
|
||||
-->
|
||||
<el-button
|
||||
slot="right"
|
||||
class="filter-item"
|
||||
type="primary"
|
||||
size="mini"
|
||||
@click="xdckPickOut(tsakSelectData)"
|
||||
>
|
||||
拣货确认
|
||||
</el-button>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<!--表格渲染-->
|
||||
<el-table :data="data" :height="dialogTableHight+'px'" :max-height="dialogTableHight+'px'" style="width: 100%;height:100%;margin-top: 10px;" border @selection-change="taskSelection">
|
||||
<el-table-column type="selection" width="55"/>
|
||||
<el-table-column type="index" :index="indexMethod" label="序号"/>
|
||||
<el-table-column prop="itemCode" label="物料编码"/>
|
||||
<el-table-column prop="itemName" label="物料名称"/>
|
||||
<el-table-column prop="stockCode" label="箱单号"/>
|
||||
<el-table-column prop="bonded" label="税别"/>
|
||||
<el-table-column prop="pointCode" label="货位"/>
|
||||
<el-table-column prop="planQty" label="订单数量"/>
|
||||
<el-table-column prop="invQty" label="库存数量"/>
|
||||
<el-table-column prop="pickQty" label="出库数量"/>
|
||||
</el-table>
|
||||
<el-dialog :visible.sync="errorDialog" append-to-body title="异常详情" width="85%">
|
||||
<pre>{{ errorInfo }}</pre>
|
||||
</el-dialog>
|
||||
<!--分页组件-->
|
||||
<el-pagination
|
||||
:total="total"
|
||||
:current-page="page + 1"
|
||||
:page-size="6"
|
||||
style="margin-top:8px;"
|
||||
layout="total, prev, pager, next"
|
||||
@size-change="sizeChange"
|
||||
@current-change="pageChange"
|
||||
/>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import crud from '@/mixins/crud'
|
||||
import DateRangePicker from '@/components/DateRangePicker/index.vue'
|
||||
import {queryPickTask} from "@/api/task";
|
||||
import crudPickDetail from "@/api/pickDetail";
|
||||
import DonMessage from "@/utils/message";
|
||||
import CRUD from '@crud/crud'
|
||||
import {pickBatch, pickWhole,xdckPickOut} from "@/api/pickTicket";
|
||||
import {queryPickDetailXd} from "@/api/inventory";
|
||||
|
||||
export default {
|
||||
components: {DateRangePicker},
|
||||
mixins: [crud],
|
||||
dicts: ['task_status'],
|
||||
|
||||
data() {
|
||||
|
||||
return {
|
||||
pickDetailId: 0,
|
||||
title: '任务日志',
|
||||
errorInfo: '', errorDialog: false,
|
||||
enabledTypeOptions: [
|
||||
{key: 'true', display_name: '成功'},
|
||||
{key: 'false', display_name: '失败'}
|
||||
],
|
||||
tsakSelectData: []
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
queryPickDetailXd(id) {
|
||||
queryPickDetailXd(id).then(res => {
|
||||
this.data = res;
|
||||
|
||||
this.loading = false;
|
||||
this.pickDetailId = id;
|
||||
return true;
|
||||
})
|
||||
},
|
||||
taskSelection(data) {
|
||||
this.tsakSelectData = data
|
||||
},
|
||||
indexMethod(index) {
|
||||
return index * 1 + 1;
|
||||
},
|
||||
//整单拣货
|
||||
singlePick() {
|
||||
crudPickDetail.picking(this.pickDetailId).then(res => {
|
||||
this.$message.success(res)
|
||||
this.queryPickTask(this.pickDetailId)
|
||||
})
|
||||
},
|
||||
|
||||
//拣货确认
|
||||
xdckPickOut(data) {
|
||||
if (this.tsakSelectData.length > 0) {
|
||||
let data_ = {invId: null, detailId: null}
|
||||
data_.invId = data[0].invId
|
||||
data_.detailId = this.pickDetailId
|
||||
xdckPickOut(data_).then(res => {
|
||||
this.$message.success(res)
|
||||
this.queryPickTask(this.pickDetailId)
|
||||
})
|
||||
}
|
||||
},
|
||||
handleClose(done) {
|
||||
done();
|
||||
this.$parent.shuaxin();//刷新父组件查询方法
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.java.hljs {
|
||||
color: #444;
|
||||
background: #ffffff !important;
|
||||
}
|
||||
|
||||
::v-deep .el-dialog__body {
|
||||
padding: 0 20px 10px 20px !important;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -19,7 +19,7 @@
|
|||
<span style="width: 200px; color: #8492a6; font-size: 13px">{{ item.name }}</span>
|
||||
</el-option>
|
||||
</el-select>
|
||||
<el-select v-model="query.gcCode" clearable placeholder="接收工厂" style="width: 185px;" class="filter-item"
|
||||
<!-- <el-select v-model="query.gcCode" clearable placeholder="接收工厂" style="width: 185px;" class="filter-item"
|
||||
@keyup.enter.native="crud.toQuery">
|
||||
<el-option
|
||||
v-for="baseStatus in dict.factory"
|
||||
|
|
@ -28,16 +28,16 @@
|
|||
:value="baseStatus.value"
|
||||
/>
|
||||
|
||||
</el-select>
|
||||
</el-select>-->
|
||||
<!-- <label class="el-form-item-label">单号</label>-->
|
||||
<el-input v-model="query.code" clearable placeholder="备货单号" style="width: 150px;" class="filter-item"
|
||||
@keyup.enter.native="crud.toQuery"/>
|
||||
<el-input v-model="query.cusCode" clearable placeholder="箱单号" style="width: 150px;" class="filter-item"
|
||||
@keyup.enter.native="crud.toQuery"/>
|
||||
<el-input v-model="query.pc" clearable placeholder="批次" style="width: 150px;" class="filter-item"
|
||||
<!-- <el-input v-model="query.pc" clearable placeholder="批次" style="width: 150px;" class="filter-item"
|
||||
@keyup.enter.native="crud.toQuery"/>
|
||||
|
||||
<!-- <label class="el-form-item-label">状态</label>-->
|
||||
<label class="el-form-item-label">状态</label>-->
|
||||
<el-select v-model="query.status" clearable placeholder="状态" value-key="id" class="filter-item" style="width: 150px;"
|
||||
@keyup.enter.native="crud.toQuery"
|
||||
>
|
||||
|
|
@ -52,10 +52,10 @@
|
|||
</el-select>
|
||||
<label class="el-form-item-label">订单日期</label>
|
||||
<date-range-picker v-model="query.orderDate" class="date-item" style="width: 100px"/>
|
||||
<label class="el-form-item-label">出单数>=</label>
|
||||
<!--<label class="el-form-item-label">出单数>=</label>
|
||||
<el-input v-model="query.allocatedQuantity" clearable placeholder="请输入数值" style="width: 100px;"
|
||||
class="filter-item"
|
||||
@keyup.enter.native="crud.toQuery"/>
|
||||
@keyup.enter.native="crud.toQuery"/>-->
|
||||
|
||||
<rrOperation :crud="crud"/>
|
||||
</div>
|
||||
|
|
@ -93,8 +93,8 @@
|
|||
type="success"
|
||||
icon="el-icon-edit"
|
||||
size="mini"
|
||||
:disabled="show_fp"
|
||||
v-permission="permission.allocate"
|
||||
:disabled="crud.selections.length <= 0||crud.selections[0].status != 'OPEN'"
|
||||
@click="allocateBtn(crud.selections)"
|
||||
>
|
||||
审核
|
||||
|
|
@ -104,9 +104,9 @@
|
|||
class="filter-item"
|
||||
type="success"
|
||||
size="mini"
|
||||
:disabled="crud.selections.length != 1||crud.selections[0].status != 'ALLOCATE'"
|
||||
:disabled="crud.selections.length<=0||crud.selections[0].status != 'ALLOCATE'"
|
||||
v-permission="permission.cancelPick"
|
||||
@click="cancelPick(crud.selections[0])"
|
||||
@click="cancelAllocateBtn(crud.selections)"
|
||||
>
|
||||
取消审核
|
||||
</el-button>
|
||||
|
|
@ -206,31 +206,6 @@
|
|||
|
||||
<!-- 拣货确认弹窗 -->
|
||||
<el-dialog title="拣货确认-拣货记录" :visible.sync="pickConfirmTF" :close-on-click-modal="false" width="88%" @close="handleCancle">
|
||||
<el-dialog
|
||||
width="30%"
|
||||
title="单一拣货"
|
||||
:visible.sync="oneTf"
|
||||
:close-on-click-modal="false"
|
||||
append-to-body
|
||||
>
|
||||
<el-form ref="taskForm" :model="pickTicketButton" label-width="90px" style="height: 90px">
|
||||
<el-form-item label="数量:" prop="onePickConfirmNumber"
|
||||
:rules="[{required:true,message:'请输入数量',trigger:'blur'}]"
|
||||
>
|
||||
<el-input v-model.number="pickTicketButton.onePickConfirmNumber" clearable></el-input>
|
||||
</el-form-item>
|
||||
<!-- <el-form-item label="目标托盘号:" prop="stockCode"-->
|
||||
<!-- >-->
|
||||
<!-- <el-input v-model.number="pickTicketButton.stockCode" clearable></el-input>-->
|
||||
<!-- </el-form-item>-->
|
||||
<el-button type="primary" @click="solePickGoods(crud.selections[0])"
|
||||
style="float: right;padding-left: 10px"
|
||||
>确认
|
||||
</el-button>
|
||||
<el-button type="text" @click="oneTf = false" style="float: right;margin-right: 10px">取消</el-button>
|
||||
|
||||
</el-form>
|
||||
</el-dialog>
|
||||
<el-dialog
|
||||
width="30%"
|
||||
title="现品票拣货"
|
||||
|
|
@ -321,7 +296,7 @@
|
|||
<el-table-column prop="itemKey.propC1" label="批次号"/>
|
||||
<el-table-column prop="planQty" label="分配数量"/>
|
||||
<el-table-column prop="moveQty" label="拣货数量"/>
|
||||
<el-table-column prop="dstPointCode" label="目标库位"/>
|
||||
<!--<el-table-column prop="dstPointCode" label="目标库位"/>-->
|
||||
<el-table-column prop="createBy" label="创建人"/>
|
||||
<el-table-column prop="createTime" label="创建时间"/>
|
||||
</el-table>
|
||||
|
|
@ -526,8 +501,8 @@
|
|||
{{ dict.label.pick_status[scope.row.status] }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="xqQty" label="需求数" width="60px" align="center"/>
|
||||
<!-- 纯需求数量
|
||||
<!-- <el-table-column prop="xqQty" label="需求数" width="60px" align="center"/>
|
||||
纯需求数量
|
||||
<el-table-column prop="pureReqQty" label="纯需求数" width="70px" align="center"/>-->
|
||||
<!-- 备货需求数量-->
|
||||
<el-table-column prop="orderQuantity" label="需求数" width="90px" align="center"/>
|
||||
|
|
@ -582,7 +557,7 @@ import crudPickTicket, {
|
|||
queryTaskLogDataS,
|
||||
xppPickGoods,
|
||||
pickStatusUpdate,
|
||||
xdckPick,pickWhole
|
||||
xdckPick,pickWhole,xdckAllocate,xdckCancelAllocate
|
||||
} from '@/api/pickTicket'
|
||||
import CRUD, { presenter, header, form, crud } from '@crud/crud'
|
||||
import rrOperation from '@crud/RR.operation.vue'
|
||||
|
|
@ -879,15 +854,45 @@ export default {
|
|||
this.crud.toQuery()
|
||||
})
|
||||
},
|
||||
//创建箱单出库
|
||||
xdckBtn() {
|
||||
crudPickTicket.xdckPick(this.xdckFrom.stockCode).then(res => {
|
||||
xdckPick(this.xdckFrom.stockCode).then(res => {
|
||||
this.xdckVisible = false
|
||||
this.$message.success(res)
|
||||
this.crud.toQuery()
|
||||
this.resetForm()
|
||||
},e=>{
|
||||
this.xdckVisible=false;
|
||||
|
||||
}).catch(() => {
|
||||
})
|
||||
},
|
||||
//箱单出库分配
|
||||
allocateBtn(datas) {
|
||||
console.log(datas)
|
||||
let list = []
|
||||
for (const datum of datas) {
|
||||
list.push(datum.id)
|
||||
}
|
||||
xdckAllocate(list).then(res => {
|
||||
this.$message.success(res)
|
||||
this.crud.toQuery()
|
||||
}).catch(() => {
|
||||
})
|
||||
},
|
||||
|
||||
//箱单出库取消分配
|
||||
cancelAllocateBtn(datas) {
|
||||
console.log(datas)
|
||||
let list = []
|
||||
for (const datum of datas) {
|
||||
list.push(datum.id)
|
||||
}
|
||||
xdckCancelAllocate(list).then(res => {
|
||||
this.$message.success(res)
|
||||
this.crud.toQuery()
|
||||
}).catch(() => {
|
||||
})
|
||||
},
|
||||
|
||||
|
||||
//重置表单
|
||||
resetForm() {
|
||||
|
|
@ -931,30 +936,7 @@ export default {
|
|||
return true
|
||||
}
|
||||
},
|
||||
allocateBtn(datas) {
|
||||
this.$confirm(`选中${datas.length}条数据确认是否分配?`, '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
|
||||
const ids = []
|
||||
for (let i = 0; i < datas.length; i++) {
|
||||
ids.push(datas[i].id)
|
||||
}
|
||||
crudPickDetail.allocatePick(ids).then(res => {
|
||||
this.crud.notify('分配成功!', CRUD.NOTIFICATION_TYPE.SUCCESS)
|
||||
this.crud.toQuery()
|
||||
}).catch(() => {
|
||||
this.crud.notify('分配失败!', CRUD.NOTIFICATION_TYPE.ERROR)
|
||||
this.crud.toQuery()
|
||||
})
|
||||
|
||||
}).catch(() => {
|
||||
this.$refs.table.clearSelection()
|
||||
this.crud.notify('取消成功!', CRUD.NOTIFICATION_TYPE.SUCCESS)
|
||||
})
|
||||
},
|
||||
pickStatusUpdateBtn(data){
|
||||
this.loading_add=true;
|
||||
let ids = [];
|
||||
|
|
@ -1189,16 +1171,6 @@ export default {
|
|||
},
|
||||
queryData(id){
|
||||
this.key=this.key+1;
|
||||
// let data_ = {pickTicketId:null};
|
||||
// data_.pickTicketId=id;
|
||||
// crudPickTicket.queryDetails(data.id).then(res=>{
|
||||
// //查询出库明细
|
||||
// this.viewDetailsDatas.outboundDetailsData = res.pickDetailList;
|
||||
// //查询分配记录
|
||||
// this.viewDetailsDatas.allocationRecords = res.pickDetailAllocateList;
|
||||
// //查询拣货记录
|
||||
// this.viewDetailsDatas.pickingRecords=res.pickDetailPickingList;
|
||||
// })
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@
|
|||
:value-key="valueKey"
|
||||
:style="style"
|
||||
@change="onChange"
|
||||
:filterMethod="filterMethod"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in items"
|
||||
|
|
@ -54,6 +55,7 @@ export default {
|
|||
data() {
|
||||
return {
|
||||
items: [],
|
||||
filteredItems: [],
|
||||
selected: this.value
|
||||
}
|
||||
},
|
||||
|
|
@ -71,13 +73,26 @@ export default {
|
|||
if (this.items.length === 0) {
|
||||
crudBomAccount.queryBomAccountPoints().then(res => {
|
||||
this.items = res
|
||||
this.filteredItems = [...this.items];
|
||||
})
|
||||
}
|
||||
},
|
||||
onChange(val) {
|
||||
console.log(1111)
|
||||
this.$emit('change', val)
|
||||
},
|
||||
filterMethod(query) {
|
||||
if (!query) {
|
||||
this.filteredItems = [...this.items];
|
||||
return;
|
||||
}
|
||||
|
||||
const lowerQuery = query.toLowerCase();
|
||||
this.items = this.filteredItems.filter(item =>
|
||||
item.zzkw_code.toLowerCase().includes(lowerQuery) ||
|
||||
item.item_code.toLowerCase().includes(lowerQuery) ||
|
||||
item.gw_code.toLowerCase().includes(lowerQuery)
|
||||
);
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,86 @@
|
|||
<template>
|
||||
<el-select
|
||||
v-model="selected"
|
||||
@focus="fetchItems"
|
||||
:placeholder="placeholder"
|
||||
:filterable="filterable"
|
||||
:value-key="valueKey"
|
||||
:style="selectStyle"
|
||||
@change="onChange"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in items"
|
||||
:key="item.id"
|
||||
:label="item.code"
|
||||
:value="item"
|
||||
>
|
||||
<span>{{ item.code }}</span>
|
||||
<span>{{ item.area.name }}</span>
|
||||
<span>{{ item.itemCode }}</span>
|
||||
|
||||
</el-option>
|
||||
|
||||
</el-select>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import curdPoint, {queryPointList} from '@/api/point'
|
||||
|
||||
export default {
|
||||
name: 'PointSelect',
|
||||
props: {
|
||||
value: null, // v-model
|
||||
placeholder: {
|
||||
type: String,
|
||||
default: '请选择库位'
|
||||
},
|
||||
filterable: {
|
||||
type: Boolean,
|
||||
default: true
|
||||
},
|
||||
valueKey: {
|
||||
type: String,
|
||||
default: 'id'
|
||||
},
|
||||
isEnabled:{
|
||||
type: Boolean,
|
||||
default: true
|
||||
},
|
||||
point_type:{
|
||||
type: String,
|
||||
default: true
|
||||
},
|
||||
selectStyle: {
|
||||
type: String,
|
||||
default: 'width: 200px;'
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
items: [],
|
||||
selected: this.value
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
value(val) {
|
||||
this.selected = val
|
||||
},
|
||||
/* selected(val) {
|
||||
this.$emit('input', val)
|
||||
this.$emit('change', val)
|
||||
}*/
|
||||
},
|
||||
methods: {
|
||||
fetchItems() {
|
||||
if (this.items.length === 0) {
|
||||
curdPoint.queryPointList({ type: this.point_type }).then(res => {
|
||||
this.items = res
|
||||
})
|
||||
}
|
||||
},
|
||||
onChange(val) {
|
||||
this.$emit('change', val)
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
Loading…
Reference in New Issue