add:出库明细页面

This commit is contained in:
zhaoyf
2026-08-10 18:35:09 +08:00
parent 2a21ac2e7f
commit 4b148da64a
7 changed files with 168 additions and 0 deletions

View File

@@ -74,6 +74,12 @@ public class OutBillController {
return ResponseData.build(iOutBillService.getOutBillDtl(whereJson), HttpStatus.OK);
}
@GetMapping("/details")
@Log("分页查询出库单明细")
public ResponseEntity<Object> queryDtl(@RequestParam Map whereJson, PageQuery page) {
return ResponseData.build(iOutBillService.pageQueryDtl(whereJson, page), HttpStatus.OK);
}
@GetMapping("/getOutBillDis")
@Log("查询未出库单分配")
public ResponseEntity<Object> getOutBillDis(@RequestParam Map whereJson) {

View File

@@ -80,6 +80,8 @@ public interface IOutBillService extends IService<IOStorInv> {
*/
List<IOStorInvDtlDto> getOutBillDtl(Map whereJson);
IPage<IOStorInvDtlDto> pageQueryDtl(Map whereJson, PageQuery page);
/**
* 查询未出库分配
* @param whereJson

View File

@@ -24,6 +24,8 @@ public interface IOStorInvMapper extends BaseMapper<IOStorInv> {
List<IOStorInvDtlDto> getIODtl (@Param("params") Map whereJson);
IPage<IOStorInvDtlDto> queryOutBillDtlPage(IPage<IOStorInvDtlDto> page, @Param("params") Map whereJson);
IPage<IOStorInv> queryOutBillPage (IPage<IOStorInv> page,@Param("params") Map whereJson);
}

View File

@@ -185,4 +185,45 @@
</where>
ORDER BY ios.iostorinv_id Desc
</select>
<select id="queryOutBillDtlPage" resultType="org.nl.wms.warehouse_manage.inAndOut.service.dto.IOStorInvDtlDto">
SELECT
dtl.*,
ios.bill_code,
ios.bill_status AS mst_bill_status,
ios.stor_id,
ios.stor_name,
ios.bill_type,
ios.biz_date,
mb.material_code,
mb.material_name
FROM st_ivt_iostorinvdtl dtl
INNER JOIN st_ivt_iostorinv ios ON ios.iostorinv_id = dtl.iostorinv_id
LEFT JOIN md_me_materialbase mb ON mb.material_id = dtl.material_id
<where>
ios.is_delete = '0' AND ios.io_type = '1'
<if test="params.bill_code != null and params.bill_code != ''">
AND ios.bill_code LIKE CONCAT('%', #{params.bill_code}, '%')
</if>
<if test="params.material_code != null and params.material_code != ''">
AND mb.material_code LIKE CONCAT('%', #{params.material_code}, '%')
</if>
<if test="params.material_name != null and params.material_name != ''">
AND mb.material_name LIKE CONCAT('%', #{params.material_name}, '%')
</if>
<if test="params.pcsn != null and params.pcsn != ''">
AND dtl.pcsn LIKE CONCAT('%', #{params.pcsn}, '%')
</if>
<if test="params.stor_id != null and params.stor_id != ''">
AND ios.stor_id = #{params.stor_id}
</if>
<if test="params.bill_status != null and params.bill_status != ''">
AND ios.bill_status = #{params.bill_status}
</if>
<if test="params.bill_type != null and params.bill_type != ''">
AND ios.bill_type = #{params.bill_type}
</if>
</where>
ORDER BY ios.input_time DESC, dtl.seq_no ASC
</select>
</mapper>

View File

@@ -25,6 +25,16 @@ public class IOStorInvDtlDto extends IOStorInvDtl {
*/
private String bill_code;
private String mst_bill_status;
private String stor_id;
private String stor_name;
private String bill_type;
private String biz_date;
/**
* 载具编号
*/

View File

@@ -149,6 +149,12 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper,IOStorInv> i
public List<IOStorInvDtlDto> getOutBillDtl(Map whereJson) {
return ioStorInvMapper.getIODtl(whereJson);
}
@Override
public IPage<IOStorInvDtlDto> pageQueryDtl(Map whereJson, PageQuery page) {
return ioStorInvMapper.queryOutBillDtlPage(new Page<>(page.getPage() + 1, page.getSize()), whereJson);
}
@Override
public List<IOStorInvDisDto> getOutBillDis(Map whereJson) {
return ioStorInvDisMapper.queryOutBillDisDtl(whereJson);

View File

@@ -0,0 +1,101 @@
<template>
<div class="app-container">
<div class="head-container">
<div v-if="crud.props.searchToggle">
<el-form :inline="true" label-position="right" label-width="80px" label-suffix=":">
<el-form-item label="单据号">
<el-input v-model="query.bill_code" clearable size="mini" placeholder="单据号" @keyup.enter.native="crud.toQuery" />
</el-form-item>
<el-form-item label="物料编码">
<el-input v-model="query.material_code" clearable size="mini" placeholder="物料编码" @keyup.enter.native="crud.toQuery" />
</el-form-item>
<el-form-item label="物料名称">
<el-input v-model="query.material_name" clearable size="mini" placeholder="物料名称" @keyup.enter.native="crud.toQuery" />
</el-form-item>
<el-form-item label="批次号">
<el-input v-model="query.pcsn" clearable size="mini" placeholder="批次号" @keyup.enter.native="crud.toQuery" />
</el-form-item>
<el-form-item label="所属仓库">
<el-select v-model="query.stor_id" clearable size="mini" placeholder="全部" @change="crud.toQuery">
<el-option v-for="item in storlist" :key="item.stor_id" :label="item.stor_name" :value="item.stor_id" />
</el-select>
</el-form-item>
<el-form-item label="单据状态">
<el-select v-model="query.bill_status" clearable size="mini" placeholder="全部" @change="crud.toQuery">
<el-option v-for="item in dict.io_bill_status" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</el-form-item>
<el-form-item label="业务类型">
<el-select v-model="query.bill_type" clearable filterable size="mini" placeholder="全部" @change="crud.toQuery">
<el-option v-for="item in dict.ST_INV_OUT_TYPE" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</el-form-item>
<rrOperation />
</el-form>
</div>
<crudOperation :permission="permission" />
<el-table v-loading="crud.loading" :data="crud.data" size="mini" style="width: 100%;">
<el-table-column type="index" label="序号" width="55" align="center" />
<el-table-column show-overflow-tooltip prop="bill_code" label="单据号" width="140" />
<el-table-column show-overflow-tooltip prop="stor_name" label="仓库" width="200" />
<el-table-column :formatter="billStatusFormat" prop="mst_bill_status" label="单据状态" width="90" />
<el-table-column :formatter="billTypeFormat" prop="bill_type" label="业务类型" width="110" />
<el-table-column prop="biz_date" label="业务日期" width="100" />
<el-table-column prop="seq_no" label="行号" width="70" align="center" />
<el-table-column show-overflow-tooltip prop="material_code" label="物料编码" min-width="140" />
<el-table-column show-overflow-tooltip prop="material_name" label="物料名称" min-width="140" />
<el-table-column show-overflow-tooltip prop="pcsn" label="批次号" width="130" />
<el-table-column :formatter="crud.formatNum3" prop="plan_qty" label="计划数量" width="100" align="right" />
<el-table-column :formatter="crud.formatNum3" prop="assign_qty" label="已分配数量" width="110" align="right" />
<el-table-column :formatter="crud.formatNum3" prop="unassign_qty" label="未分配数量" width="110" align="right" />
<el-table-column prop="qty_unit_name" label="单位" width="80" />
<el-table-column show-overflow-tooltip prop="source_bill_code" label="源单号" width="140" />
<el-table-column show-overflow-tooltip prop="source_load_port" label="指定上料口" width="120" />
<el-table-column show-overflow-tooltip prop="remark" label="备注" min-width="120" />
</el-table>
<pagination />
</div>
</div>
</template>
<script>
import CRUD, { crud, header, presenter } from '@crud/crud'
import rrOperation from '@crud/RR.operation'
import crudOperation from '@crud/CRUD.operation'
import pagination from '@crud/Pagination'
import crudBsrealstorattr from '@/views/wms/basedata/bsrealstorattr/bsrealstorattr'
export default {
name: 'OutbillDetail',
components: { crudOperation, rrOperation, pagination },
cruds() {
return CRUD({
title: '出库单明细',
idField: 'iostorinvdtl_id',
url: 'api/checkoutbill/details',
optShow: { add: false, edit: false, del: false, reset: true, download: false }
})
},
mixins: [presenter(), header(), crud()],
dicts: ['io_bill_status', 'ST_INV_OUT_TYPE'],
data() {
return {
permission: {},
storlist: []
}
},
created() {
crudBsrealstorattr.getStor().then(res => {
this.storlist = res.data
})
},
methods: {
billStatusFormat(row) {
return this.dict.label.io_bill_status[row.mst_bill_status]
},
billTypeFormat(row) {
return this.dict.label.ST_INV_OUT_TYPE[row.bill_type]
}
}
}
</script>