FOAM 2025-08-29 18:01:41 +08:00
parent bc06ef3de2
commit e328915057
24 changed files with 648 additions and 225 deletions

View File

@ -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}

View File

@ -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}

View File

@ -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}

View File

@ -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>

View File

@ -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="接收工厂"/>

View File

@ -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="货位" />

View File

@ -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

View File

@ -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',

View File

@ -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;
}

View File

@ -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 {

View File

@ -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>

View File

@ -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;
},
//

View File

@ -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()

View File

@ -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;"/>

View File

@ -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() {

View File

@ -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>

View File

@ -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);

View File

@ -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"/>
<!-- 发生数量-->

View File

@ -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();
},

View File

@ -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(`确认整单退拣?`, '提示', {

View File

@ -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>

View File

@ -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;
// })
}
}
}

View File

@ -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>

View File

@ -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>