Files
klp-oa/klp-ui/src/views/wms/coil/panels/DrillDownTable.vue
砂糖 fba896b6e1 style(ui): 调整对话框和表格样式
- 增加对话框主体的最大高度
- 修改表格高度属性为固定值
- 合并重量列并调整格式
- 优化入场卷号列的宽度
- 格式化更新时间显示
2025-12-05 15:47:05 +08:00

212 lines
5.9 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div class="drill-down-content">
<!-- 钻取条件显示 -->
<div class="drill-down-header">
<el-tag size="large" v-if="queryParams.itemType">
{{ queryParams.itemType === 'product' ? '成品' : '原材料' }}
</el-tag>
<el-tag size="large" v-if="itemName" type="primary">
{{ itemName }}
</el-tag>
<el-tag size="large" v-if="warehouseName" type="success">
{{ warehouseName }}
</el-tag>
<el-tag size="large" v-if="actualWarehouseName" type="info">
{{ actualWarehouseName }}
</el-tag>
</div>
<!-- 加载状态 -->
<el-skeleton :loading="loading" animated>
<template #template>
<div class="demo-skeleton">
<el-skeleton-item variant="p" style="width: 80%" />
<el-skeleton-item variant="text" style="width: 30%" />
<el-skeleton-item variant="text" style="width: 60%" />
</div>
</template>
<!-- 钻取表格 -->
<el-table
height="400"
v-loading="loading"
:data="list"
border
stripe
style="width: 100%"
v-if="!loading"
>
<el-table-column prop="warehouseName" label="库位" align="center" min-width="150"></el-table-column>
<el-table-column label="实际库区" align="center" prop="actualWarehouseName" v-if="!hideWarehouseQuery"/>
<el-table-column prop="currentCoilNo" label="当前卷号" align="center" min-width="120"></el-table-column>
<el-table-column prop="enterCoilNo" label="入场卷号" align="center"></el-table-column>
<el-table-column label="物料类型" align="center" prop="itemType">
<template slot-scope="scope">
{{ scope.row.itemType == 'product' ? '成品' : '原料' }}
</template>
</el-table-column>
<el-table-column label="产品类型" align="center" min-width="250">
<template slot-scope="scope">
<ProductInfo v-if="scope.row.itemType === 'product'" :product="scope.row.product" />
<RawMaterialInfo v-else-if="scope.row.itemType === 'raw_material'" :material="scope.row.rawMaterial" />
</template>
</el-table-column>
<el-table-column label="更新时间" align="center" prop="updateTime">
<template slot-scope="scope">
{{ parseTime(scope.row.updateTime, '{y}-{m}-{d}') }}
</template>
</el-table-column>
<el-table-column prop="grossWeight" label="重量(t)" align="center" min-width="100">
<template slot-scope="scope">
{{ scope.row.netWeight }} / {{ scope.row.grossWeight }}
</template>
</el-table-column>
<!-- <el-table-column prop="netWeight" label="净重(kg)" align="center" min-width="100"></el-table-column> -->
</el-table>
</el-skeleton>
<!-- 分页 -->
<div class="pagination-container" v-if="!loading && list.length > 0">
<el-pagination
background
:current-page.sync="pageNum"
:page-size.sync="pageSize"
:page-sizes="[10, 20, 50, 100]"
layout="total, sizes, prev, pager, next, jumper"
:total="total"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
></el-pagination>
</div>
</div>
</template>
<script>
import { listMaterialCoil } from "@/api/wms/coil";
import RawMaterialInfo from "@/components/KLPService/Renderer/RawMaterialInfo";
import ProductInfo from "@/components/KLPService/Renderer/ProductInfo";
export default {
components: {
RawMaterialInfo,
ProductInfo
},
props: {
// 查询参数包含warehouseId, itemType, itemId
queryParams: {
type: Object,
default: () => ({
warehouseId: null,
itemType: null,
itemId: null,
actualWarehouseId: null
})
},
// 物料名称(用于显示标签)
itemName: {
type: String,
default: ''
},
// 仓库名称(用于显示标签)
warehouseName: {
type: String,
default: ''
},
// 实际库区名称(用于显示标签)
actualWarehouseName: {
type: String,
default: ''
}
},
data() {
return {
loading: false,
list: [],
total: 0,
pageNum: 1,
pageSize: 20
};
},
watch: {
// 监听查询参数变化,重新加载数据
queryParams: {
deep: true,
handler() {
// 重置页码
this.pageNum = 1;
// 重新加载数据
this.getList();
}
}
},
mounted() {
// 初始加载数据
this.getList();
},
methods: {
getList() {
this.loading = true;
// 构建查询参数
const params = {
pageNum: this.pageNum,
pageSize: this.pageSize,
itemType: this.queryParams.itemType,
itemId: this.queryParams.itemId,
warehouseId: this.queryParams.warehouseId
};
// 调用API获取数据
listMaterialCoil({ ...params, dataType: 1 }).then(res => {
this.list = res.rows || [];
this.total = res.total || 0;
this.loading = false;
}).catch(error => {
console.error('获取钻取数据失败:', error);
this.loading = false;
this.$message.error('获取明细数据失败');
});
},
// 处理分页大小变化
handleSizeChange(val) {
this.pageSize = val;
this.getList();
},
// 处理当前页变化
handleCurrentChange(val) {
this.pageNum = val;
this.getList();
}
}
};
</script>
<style scoped>
.drill-down-content {
padding: 10px 0;
}
.drill-down-header {
margin-bottom: 20px;
padding-bottom: 10px;
border-bottom: 1px solid #f0f0f0;
}
.drill-down-header .el-tag {
margin-right: 10px;
margin-bottom: 10px;
}
.pagination-container {
margin-top: 20px;
display: flex;
justify-content: flex-end;
}
/* 骨架屏样式 */
.demo-skeleton {
padding: 20px 0;
}
</style>