feat:多项功能优化

This commit is contained in:
zhoujianjin
2026-09-18 18:54:54 +08:00
parent 672cd23329
commit 543655d441
48 changed files with 1289 additions and 447 deletions
@@ -1,73 +0,0 @@
<template>
<el-card>
<el-alert type="info" :closable="false" style="margin-bottom:12px"
title="数量不符上报:工位收料时发现「实收数量」与备料单「应发数量」不一致,由工位终端或本页上报。系统自动算出差异并落预警,供生产/仓库核实处理。" />
<el-form inline>
<el-form-item label="状态">
<el-select v-model="query.status" clearable placeholder="全部" style="width:130px" @change="load">
<el-option label="待处理" value="PENDING" />
<el-option label="已处理" value="RESOLVED" />
</el-select>
</el-form-item>
<el-form-item label="工单号"><el-input v-model="query.orderNo" clearable style="width:160px" @keyup.enter="load" /></el-form-item>
<el-form-item label="图号"><el-input v-model="query.materialCode" clearable style="width:150px" placeholder="不区分大小写" @keyup.enter="load" /></el-form-item>
<el-form-item>
<el-button type="primary" @click="load">查询</el-button>
</el-form-item>
</el-form>
<el-table :data="list" border size="small">
<el-table-column prop="stationNo" label="工位" width="70" align="center" />
<el-table-column prop="orderNo" label="工单号" min-width="130" />
<el-table-column prop="sn" label="产品序列号" min-width="140" />
<el-table-column prop="materialCode" label="图号" min-width="110" />
<el-table-column prop="materialName" label="物料名称" min-width="110" />
<el-table-column prop="planQty" label="应发" width="70" align="center" />
<el-table-column prop="actualQty" label="实收" width="70" align="center" />
<el-table-column label="差异" width="80" align="center">
<template #default="{row}">
<span :style="{ color: row.diffQty === 0 ? '#909399' : (row.diffQty > 0 ? '#67c23a' : '#f56c6c'), fontWeight: 600 }">
{{ row.diffQty > 0 ? '+' + row.diffQty : row.diffQty }}
</span>
</template>
</el-table-column>
<el-table-column prop="cause" label="原因" min-width="140" show-overflow-tooltip />
<el-table-column label="状态" width="90" align="center">
<template #default="{row}">
<el-tag :type="row.status === 'RESOLVED' ? 'success' : 'warning'" size="small">
{{ row.status === 'RESOLVED' ? '已处理' : '待处理' }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="operator" label="上报人" width="90" />
<el-table-column label="上报时间" width="160">
<template #default="{row}">{{ fmtTime(row.createdAt) }}</template>
</el-table-column>
</el-table>
</el-card>
<PageHelp :data="helpQtyReport" page="QtyReport" />
</template>
<script setup>
import { reactive, ref, onMounted } from 'vue'
import request from '../utils/request'
import PageHelp from '../components/PageHelp.vue'
import { helpQtyReport } from '../help'
const query = reactive({ status: '', orderNo: '', materialCode: '' })
const list = ref([])
function fmtTime(t) {
if (!t) return '-'
const d = new Date(t)
if (isNaN(d.getTime())) return t
const p = (n) => String(n).padStart(2, '0')
return `${d.getFullYear()}-${p(d.getMonth() + 1)}-${p(d.getDate())} ${p(d.getHours())}:${p(d.getMinutes())}`
}
async function load() {
list.value = (await request.get('/qty-reports', { params: query })) || []
}
onMounted(() => { load() })
</script>