库存查询页面修改

This commit is contained in:
zx
2026-01-21 17:19:04 +08:00
parent 3f683048c8
commit 335b3b2f14
3 changed files with 978 additions and 1736 deletions

View File

@@ -12,8 +12,8 @@ export function listBill(data) {
export function listStock(data) { export function listStock(data) {
return request({ return request({
url: '/wisdom/stock/list', url: '/wisdom/stock/list',
method: 'post', method: 'get',
data: data params: data
}) })
} }

View File

@@ -1,35 +1,20 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" ref="queryRef" v-show="showSearch" label-width="90"> <el-form :model="queryParams" ref="queryRef" v-show="showSearch" label-width="90">
<el-row > <el-row>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="项目号" prop="xmNo"> <el-form-item label="项目号" prop="xmNo">
<el-input <el-input v-model="queryParams.xmNo" placeholder="请输入项目号" clearable @keyup.enter="handleQuery" />
v-model="queryParams.xmNo"
placeholder="请输入项目号"
clearable
@keyup.enter="handleQuery"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="订单编号" prop="sapNo"> <el-form-item label="订单编号" prop="sapNo">
<el-input <el-input v-model="queryParams.sapNo" placeholder="请输入订单编号" clearable @keyup.enter="handleQuery" />
v-model="queryParams.sapNo"
placeholder="请输入订单编号"
clearable
@keyup.enter="handleQuery"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="单据号" prop="billNo"> <el-form-item label="单据号" prop="billNo">
<el-input <el-input v-model="queryParams.billNo" placeholder="请输入单据号" clearable @keyup.enter="handleQuery" />
v-model="queryParams.billNo"
placeholder="请输入单据号"
clearable
@keyup.enter="handleQuery"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
@@ -40,41 +25,27 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row > <el-row>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="物料号" prop="wlNo"> <el-form-item label="物料号" prop="wlNo">
<el-input <el-input v-model="queryParams.wlNo" placeholder="请输入物料号" clearable @keyup.enter="handleQuery" />
v-model="queryParams.wlNo"
placeholder="请输入物料号"
clearable
@keyup.enter="handleQuery"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="项目描述" prop="xmMs"> <el-form-item label="项目描述" prop="xmMs">
<el-input <el-input v-model="queryParams.xmMs" placeholder="请输入项目描述" clearable @keyup.enter="handleQuery" />
v-model="queryParams.xmMs"
placeholder="请输入项目描述"
clearable
@keyup.enter="handleQuery"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="存放位置" prop="pcode"> <el-form-item label="存放位置" prop="pcode">
<el-input <el-input v-model="queryParams.pcode" placeholder="请输入存放位置" clearable @keyup.enter="handleQuery" />
v-model="queryParams.pcode"
placeholder="请输入存放位置"
clearable
@keyup.enter="handleQuery"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="入库类型" prop="operationTypeRK"> <el-form-item label="入库类型" prop="operationTypeRK">
<el-select v-model="operationTypeRK" placeholder="请选择入库类型" clearable @change="changeOperationType($event,'operationTypeRK')" > <el-select v-model="operationTypeRK" placeholder="请选择入库类型" clearable
@change="changeOperationType($event, 'operationTypeRK')">
<el-option v-for="dict in storeTypeList" :key="dict.id" :label="dict.typeName" :value="dict.typeCode" /> <el-option v-for="dict in storeTypeList" :key="dict.id" :label="dict.typeName" :value="dict.typeCode" />
</el-select> </el-select>
</el-form-item> </el-form-item>
@@ -83,38 +54,24 @@
<el-row> <el-row>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="所属仓库" prop="warehouseCode"> <el-form-item label="所属仓库" prop="warehouseCode">
<el-cascader <el-cascader v-model="warehouseCode" :options="warehouseOptions" placeholder="请选择所属仓库" style="width: 100%;"
v-model="warehouseCode" :props="{ children: 'children', label: 'warehouseName', value: 'warehouseCode' }" />
:options="warehouseOptions"
placeholder="请选择所属仓库"
style="width: 100%;"
:props="{children: 'children', label: 'warehouseName', value: 'warehouseCode'}"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="物料描述" prop="wlMs"> <el-form-item label="物料描述" prop="wlMs">
<el-input <el-input v-model="queryParams.wlMs" placeholder="请输入物料描述" clearable @keyup.enter="handleQuery" />
v-model="queryParams.wlMs"
placeholder="请输入物料描述"
clearable
@keyup.enter="handleQuery"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="供应商名称" prop="gysMc"> <el-form-item label="供应商名称" prop="gysMc">
<el-input <el-input v-model="queryParams.gysMc" placeholder="请输入供应商名称" clearable @keyup.enter="handleQuery" />
v-model="queryParams.gysMc"
placeholder="请输入供应商名称"
clearable
@keyup.enter="handleQuery"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="出库类型" prop="operationTypeCK"> <el-form-item label="出库类型" prop="operationTypeCK">
<el-select v-model="operationTypeCK" placeholder="请选择出库类型" @change="changeOperationType($event,'operationTypeCK')" clearable > <el-select v-model="operationTypeCK" placeholder="请选择出库类型"
@change="changeOperationType($event, 'operationTypeCK')" clearable>
<el-option v-for="dict in ckTypeList" :key="dict.id" :label="dict.typeName" :value="dict.typeCode" /> <el-option v-for="dict in ckTypeList" :key="dict.id" :label="dict.typeName" :value="dict.typeCode" />
</el-select> </el-select>
</el-form-item> </el-form-item>
@@ -123,15 +80,9 @@
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="操作时间" prop="rkTime"> <el-form-item label="操作时间" prop="optionTime">
<el-date-picker <el-date-picker v-model="optionTime" type="datetimerange" start-placeholder="开始时间" end-placeholder="结束时间"
v-model="optionTime" format="YYYY/MM/DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss" />
type="datetimerange"
start-placeholder="开始时间"
end-placeholder="结束时间"
format="YYYY/MM/DD HH:mm:ss"
value-format="YYYY-MM-DD HH:mm:ss"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12" class="searchBtn"> <el-col :span="12" class="searchBtn">
@@ -144,178 +95,166 @@
</el-form> </el-form>
<el-row :gutter="10" class="mb8"> <el-row :gutter="10" class="mb8">
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button type="primary" plain icon="Download" @click="handleExport"
type="primary" v-hasPermi="['wisdom:stock:export']">导出</el-button>
plain
icon="Download"
@click="handleExport"
v-hasPermi="['wisdom:stock:export']"
>导出</el-button>
</el-col> </el-col>
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar> <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
</el-row> </el-row>
<el-table v-loading="loading" :data="stockList" show-overflow-tooltip border > <el-table v-loading="loading" :data="stockList" show-overflow-tooltip border :row-class-name="tableBillRowClassName">
<el-table-column label="序号" align="center" type="index" width="70" /> <el-table-column label="序号" align="center" type="index" width="70" />
<el-table-column label="操作类型" align="center" prop="bizType" width="100"> <el-table-column label="操作类型" align="center" prop="bizType" width="100">
<template #default="scope"> <template #default="scope">
<dict-tag :options="dictTagData()" :value="scope.row.bizType" /> <dict-tag :options="dictTagData()" :value="scope.row.bizType" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="详细类型" align="center" prop="operationTypeName" width="150"/> <el-table-column label="详细类型" align="center" prop="operationTypeName" width="150" />
<el-table-column label="单据号" align="center" prop="billNo" width="180" /> <el-table-column label="单据号" align="center" prop="billNo" width="180" />
<el-table-column label="物料号" align="center" prop="wlNo" width="100"/> <el-table-column label="物料号" align="center" prop="wlNo" width="100" />
<el-table-column label="物料描述" align="center" prop="wlMs" width="150"/> <el-table-column label="物料描述" align="center" prop="wlMs" width="150" />
<el-table-column label="单位" align="center" prop="dw" /> <el-table-column label="单位" align="center" prop="dw" />
<el-table-column label="数量" align="center" prop="realQty" width="120"/> <el-table-column label="数量" align="center" prop="realQty" width="120" />
<el-table-column label="项目号" align="center" prop="xmNo" width="150"/> <el-table-column label="项目号" align="center" prop="xmNo" width="150" />
<el-table-column label="项目描述" align="center" prop="xmMs" width="150"/> <el-table-column label="项目描述" align="center" prop="xmMs" width="150" />
<el-table-column label="库位码" align="center" prop="pcode" width="120"/> <el-table-column label="库位码" align="center" prop="pcode" width="120" />
<el-table-column label="所属大库" align="center" prop="parentWarehouseName" width="120"/> <el-table-column label="所属大库" align="center" prop="parentWarehouseName" width="120" />
<el-table-column label="所属小库" align="center" prop="warehouseName" width="120"/> <el-table-column label="所属小库" align="center" prop="warehouseName" width="120" />
<el-table-column label="订单编号" align="center" prop="sapNo" width="150"/> <el-table-column label="订单编号" align="center" prop="sapNo" width="150" />
<el-table-column label="供应商名称" align="center" prop="gysMc" width="150"/> <el-table-column label="供应商名称" align="center" prop="gysMc" width="150" />
<el-table-column label="理货员" align="center" prop="operatorName" width="150"/> <el-table-column label="理货员" align="center" prop="operatorName" width="150" />
<el-table-column label="操作时间" align="center" prop="operationTime" width="200"/> <el-table-column label="操作时间" align="center" prop="operationTime" width="200" />
</el-table> </el-table>
<pagination <pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum"
v-show="total>0" v-model:limit="queryParams.pageSize" @pagination="getList" />
:total="total"
v-model:page="queryParams.pageNum"
v-model:limit="queryParams.pageSize"
@pagination="getList"
/>
<!-- 图片预览 --> <!-- 图片预览 -->
<el-dialog v-model="dialogVisible"> <el-dialog v-model="dialogVisible">
<img w-full :src="dialogImageUrl" alt="Preview Image" /> <img w-full :src="dialogImageUrl" alt="Preview Image" />
</el-dialog> </el-dialog>
</div> </div>
</template> </template>
<script setup name="Record"> <script setup name="Record">
import { listStock} from "@/api/wisdom/record"; import { listStock } from "@/api/wisdom/record";
import {listOuttype} from "@/api/information/outtype"; //出库类型 import { listOuttype } from "@/api/information/outtype"; //出库类型
import {warehouseAll} from "@/api/information/warehouseinfo"; //所属仓库 import { warehouseAll } from "@/api/information/warehouseinfo"; //所属仓库
import {materialtypeDict} from "@/api/information/materialtype"; //物资类型 import { materialtypeDict } from "@/api/information/materialtype"; //物资类型
import {warehousingDict} from "@/api/information/warehousingtype"; //入库类型 import { warehousingDict } from "@/api/information/warehousingtype"; //入库类型
import { parseTime } from '@/utils/manage'; import { parseTime } from '@/utils/manage';
const { proxy } = getCurrentInstance(); const { proxy } = getCurrentInstance();
const total = ref(0); const total = ref(0);
const loading = ref(true); const loading = ref(true);
const showSearch = ref(true); const showSearch = ref(true);
const dialogVisible = ref(false); const dialogVisible = ref(false);
const dialogImageUrl = ref(''); const dialogImageUrl = ref('');
const optionTime = ref([]); const optionTime = ref([]);
const storeStatusList = ref([ const storeStatusList = ref([
{id:'0',statusName:"已入库"}, { id: '0', statusName: "已入库" },
{id:'1',statusName:"已出库"} { id: '1', statusName: "已出库" }
])//库存状态 ])//库存状态
const isChukuList = ref([ const isChukuList = ref([
{ value: '0', label: '入库', elTagType: "success", elTagClass: null }, { value: '0', label: '入库', elTagType: "success", elTagClass: null },
{ value: '1', label: '借料出库', elTagType: "warning", elTagClass: null }, { value: '1', label: '借料出库', elTagType: "warning", elTagClass: null },
{ value: '3', label: '还料入库', elTagType: "warning", elTagClass: null }, { value: '3', label: '还料入库', elTagType: "warning", elTagClass: null },
]) ])
const data = reactive({ const data = reactive({
form: {}, form: {},
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
pageSize: 10, pageSize: 10,
billNo:null, billNo: null,
isChuku:null, isChuku: null,
startTime:null, startTime: null,
endTime:null, endTime: null,
xmNo: null, xmNo: null,
sapNo: null, sapNo: null,
xmMs:"", xmMs: "",
wlNo:"", wlNo: "",
gysNo:"", gysNo: "",
pcode:"", pcode: "",
gysMc:"", gysMc: "",
cangku:"", cangku: "",
wlMs:"", wlMs: "",
ids:[], ids: [],
parentWarehouseCode:"", },
warehouseCode:"", });
} ,
});
const { queryParams } = toRefs(data); const { queryParams } = toRefs(data);
//出库类型入库类型改变 //出库类型入库类型改变
const operationTypeRK = ref([]) //入库类型 const operationTypeRK = ref([]) //入库类型
const operationTypeCK = ref([]) //出库类型 const operationTypeCK = ref([]) //出库类型
function changeOperationType (val,name){ function changeOperationType(val, name) {
if(name == 'operationTypeRK'){ if (name == 'operationTypeRK') {
operationTypeRK.value =val operationTypeRK.value = val
operationTypeCK.value = '' operationTypeCK.value = ''
}else if(name == 'operationTypeCK'){ } else if (name == 'operationTypeCK') {
operationTypeCK.value = val operationTypeCK.value = val
operationTypeRK.value = '' operationTypeRK.value = ''
} }
} }
//查询库存单据主列表 //查询库存单据主列表
const stockList = ref([]); const stockList = ref([]);
function getList() { function getList() {
loading.value = true; loading.value = true;
listStock(queryParams.value).then(response => { listStock(queryParams.value).then(response => {
stockList.value = response.rows stockList.value = response.rows
total.value = response.total; total.value = response.total;
loading.value = false; loading.value = false;
}); });
} }
//获取所属仓库下拉 //获取所属仓库下拉
const warehouseOptions = ref([]); //仓库下拉数据 const warehouseOptions = ref([]); //仓库下拉数据
const warehouseCode = ref([]); //所属仓库下拉数据 const warehouseCode = ref([]); //所属仓库下拉数据
function warehouseFun(){ function warehouseFun() {
//所属仓库下拉数据 //所属仓库下拉数据
// warehouseDict().then(response=>{ // warehouseDict().then(response=>{
// warehouseList.value = response.data // warehouseList.value = response.data
// }) // })
warehouseAll().then(response=>{ warehouseAll().then(response => {
warehouseOptions.value = response.data warehouseOptions.value = response.data
}) })
} }
//获取物资类型下拉 //获取物资类型下拉
const wzTypeList = ref([]); //物资类型下拉数据 const wzTypeList = ref([]); //物资类型下拉数据
function materialFun(){ function materialFun() {
//获取物资类型下拉数据 //获取物资类型下拉数据
materialtypeDict().then(response=>{ materialtypeDict().then(response => {
wzTypeList.value = response.data wzTypeList.value = response.data
}) })
} }
//获取出入库类型下拉 //获取出入库类型下拉
const ckTypeList = ref([]); //出库类型下拉数据 const ckTypeList = ref([]); //出库类型下拉数据
const storeTypeList = ref([]); //入库类型下拉数据 const storeTypeList = ref([]); //入库类型下拉数据
function rklxList(){ function rklxList() {
//获取入库类型下拉数据 //获取入库类型下拉数据
warehousingDict().then(response=>{ warehousingDict().then(response => {
storeTypeList.value = response.data storeTypeList.value = response.data
}) })
//获取出库类型下拉数据 //获取出库类型下拉数据
listOuttype({pageNum:1,pageSize:50}).then(response=>{ listOuttype({ pageNum: 1, pageSize: 50 }).then(response => {
ckTypeList.value = response.rows ckTypeList.value = response.rows
}) })
} }
//导出按钮操作 //导出按钮操作
function handleExport() { function handleExport() {
// wisdom/stock/export // wisdom/stock/export
let obj = JSON.parse(JSON.stringify(queryParams.value)) let obj = JSON.parse(JSON.stringify(queryParams.value))
delete obj.pageNum delete obj.pageNum
@@ -323,53 +262,61 @@
proxy.download('wisdom/record/export', { proxy.download('wisdom/record/export', {
...obj ...obj
}, `出入库记录_${parseTime(new Date().getTime(), '{y}年{m}月{d}日 {h}_{i}_{s}')}.xlsx`) }, `出入库记录_${parseTime(new Date().getTime(), '{y}年{m}月{d}日 {h}_{i}_{s}')}.xlsx`)
} }
//搜索按钮操作 //搜索按钮操作
function handleQuery() { function handleQuery() {
//所属仓库 //所属仓库
if(warehouseCode.value){ console.log(warehouseCode.value, optionTime, '====');
if (warehouseCode.value) {
queryParams.value.cangku = warehouseCode.value[1] queryParams.value.cangku = warehouseCode.value[1]
} }
//详细类型 //详细类型
if(operationTypeCK.value || operationTypeRK.value){ if (operationTypeCK.value || operationTypeRK.value) {
queryParams.value.operationType = operationTypeRK.value || operationTypeCK.value queryParams.value.operationType = operationTypeRK.value || operationTypeCK.value
} }
//操作时间 //操作时间
if(optionTime.value && optionTime.value.length>0){ if (optionTime.value && optionTime.value.length > 0) {
queryParams.value.startDate = optionTime.value[0] queryParams.value.startDate = optionTime.value[0]
queryParams.value.endDate = optionTime.value[1] queryParams.value.endDate = optionTime.value[1]
}else{ } else {
queryParams.value.startDate = "" queryParams.value.startDate = ""
queryParams.value.endDate = "" queryParams.value.endDate = ""
} }
queryParams.value.pageNum = 1; queryParams.value.pageNum = 1;
getList(); getList();
} }
// 重置按钮操作 // 重置按钮操作
function resetQuery() { function resetQuery() {
proxy.resetForm("queryRef"); proxy.resetForm("queryRef");
optionTime.value = [] optionTime.value = []
operationTypeCK.value='' operationTypeCK.value = ''
operationTypeRK.value='' operationTypeRK.value = ''
warehouseCode.value='' warehouseCode.value = ''
queryParams.value.parentWarehouseCode = null
queryParams.value.warehouseCode = null
queryParams.value.operationType = '' queryParams.value.operationType = ''
queryParams.value.cangku ='' queryParams.value.cangku = ''
handleQuery(); handleQuery();
}
//数据列表
getList();
//所属仓库
warehouseFun()
//物资类型
materialFun()
//出、入库类型下拉数据
rklxList()
// 显示预出库的状态
const tableBillRowClassName = ({ row, rowIndex }) => {
console.log('row===>',row);
if (row.execStatus == 0) {
return 'success-row'
} }
return ''
//数据列表 }
getList();
//所属仓库
warehouseFun()
//物资类型
materialFun()
//出、入库类型下拉数据
rklxList()
const dictTagData = () => { const dictTagData = () => {
return isChukuList.value.map(item => ({ return isChukuList.value.map(item => ({
@@ -377,12 +324,21 @@ const dictTagData = () => {
value: String(item.value) value: String(item.value)
})); }));
} }
</script> </script>
<style scoped> <style scoped>
.searchBtn{ :deep(.el-table .success-row) {
background-color: #f8fdf5 !important;
}
.el-table {
/* 核心:把 hover 背景色设为和默认行背景色一致 */
--el-table-row-hover-bg-color: transparent;
/* 或设为和表格背景色相同(比如白色),更通用 */
/* --el-table-row-hover-bg-color: #ffffff; */
}
.searchBtn {
display: flex; display: flex;
justify-content: flex-end; justify-content: flex-end;
} }
</style> </style>

File diff suppressed because it is too large Load Diff