标签追溯改动

This commit is contained in:
2025-07-04 20:29:12 +08:00
parent 0a15c45e4f
commit fbd405f8a9
2 changed files with 344 additions and 0 deletions

View File

@@ -0,0 +1,320 @@
<template>
<div class="app-container">
<!-- 搜索表单 -->
<el-form :model="queryParams" size="small" label-position="left" inline ref="queryForm" :label-width="labelWidth" v-show="showSearch" @submit.native.prevent>
<el-form-item label="零件号">
<el-input clearable v-model.trim="queryParams.partNumber"></el-input>
</el-form-item>
<el-form-item label="工单号">
<el-input clearable v-model.trim="queryParams.workOrder"></el-input>
</el-form-item>
<el-form-item label="产品条码">
<el-input clearable v-model.trim="queryParams.label"></el-input>
</el-form-item>
<!-- <el-form-item label="箱条码">
<el-input clearable v-model.trim="queryParams.packingCode"></el-input>
</el-form-item> -->
<!-- <el-form-item label="设备编号">
<el-input clearable v-model.trim="queryParams.machine"></el-input>
</el-form-item> -->
<el-form-item label="开始时间">
<el-date-picker :style="{ width: 180 }" v-model="queryParams.startTime" type="datetime" placeholder="选择日期时间" align="right" :picker-options="pickerOptions">
</el-date-picker>
</el-form-item>
<el-form-item label="结束时间">
<el-date-picker :style="{ width: 180 }" v-model="queryParams.endTime" type="datetime" placeholder="选择日期时间" align="right" :picker-options="pickerOptions">
</el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<!-- 工具区域 -->
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<!-- 去掉新增按钮 -->
</el-col>
<el-col :span="1.5">
<!-- 去掉修改按钮 -->
</el-col>
<el-col :span="1.5">
<!-- 去掉删除按钮 -->
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<!-- 数据区域 -->
<el-table :data="dataList" v-loading="loading" ref="table" border highlight-current-row @sort-change="sortChange">
<el-table-column type="selection" width="50" align="center" />
<!-- <el-table-column prop="id" label="主键" align="center" /> -->
<el-table-column prop="module" label="模块" align="center" />
<!-- <el-table-column prop="searchType" label="标签搜索类型" align="center" /> -->
<!-- <el-table-column prop="machine" label="设备名称" align="center" /> -->
<el-table-column prop="workOrder" label="工单号" align="center" min-width="120" />
<el-table-column prop="partNumber" label="零件号" align="center" min-width="120" />
<el-table-column prop="description" label="零件描述" align="center" />
<el-table-column prop="packageLabel" label="箱条码" align="center" min-width="140" />
<el-table-column prop="innerLabel" label="内标签条码" align="center" min-width="140" />
<!-- <el-table-column prop="fullMsg" label="是否满箱标签" align="center" /> -->
<!-- <el-table-column prop="team" label="班组" align="center" /> -->
<!-- <el-table-column prop="siteNo" label="站点" align="center" /> -->
<!-- <el-table-column prop="comNo" label="串口" align="center" /> -->
<el-table-column prop="remark" label="备注" align="center" />
<el-table-column prop="createTime" label="创建时间" align="center" min-width="160" />
<el-table-column label="操作" fixed="right" align="center" width="80">
<template slot-scope="scope">
<el-button size="mini" type="info" icon="el-icon-info" title="详情" @click="showDetail(scope.row)"></el-button>
<!-- 去掉删除按钮 -->
</template>
</el-table-column>
</el-table>
<!-- 详情弹窗 -->
<el-dialog width="80%" append-to-body :title="detailTitle" :lock-scroll="false" :visible.sync="detailVisible">
<!-- 新增筛选区域 -->
<el-form :inline="true" :model="detailFilterParams" class="mb8">
<el-form-item label="设备号">
<el-select v-model="detailFilterParams.machine" placeholder="请选择设备号">
<el-option label="全部" value=""></el-option>
<el-option label="0" value="0"></el-option>
<el-option label="1" value="1"></el-option>
<el-option label="2" value="2"></el-option>
<el-option label="3" value="3"></el-option>
<el-option label="4" value="4"></el-option>
</el-select>
</el-form-item>
<el-form-item label="满箱">
<el-select v-model="detailFilterParams.fillType">
<el-option label="全部" :value="-1"></el-option>
<el-option label="满箱" :value="1"></el-option>
<el-option label="零头箱" :value="0"></el-option>
</el-select>
</el-form-item>
<el-form-item label="流水号(箱条码)">
<el-input clearable v-model.trim="detailFilterParams.packingCode" placeholder="请输入流水号(箱条码)"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="getDetailList">筛选</el-button>
<el-button @click="resetDetailFilter">重置</el-button>
</el-form-item>
</el-form>
<el-table :data="detailDataList" v-loading="detailLoading" border highlight-current-row>
<!-- <el-table-column prop="id" label="主键" align="center" /> -->
<el-table-column prop="machine" label="设备名称" align="center" />
<el-table-column prop="workOrder" label="工单号" align="center" min-width="120" />
<el-table-column prop="partNumber" label="零件号" align="center" min-width="120" />
<el-table-column prop="description" label="零件描述" align="center" />
<el-table-column prop="packageLabel" label="箱条码" align="center" min-width="140" />
<el-table-column prop="innerLabel" label="内标签条码" align="center" min-width="140" />
<el-table-column prop="fullMsg" label="是否满箱标签" align="center" />
<el-table-column prop="team" label="班组" align="center" />
<el-table-column prop="siteNo" label="站点" align="center" />
<el-table-column prop="comNo" label="串口" align="center" />
<el-table-column prop="remark" label="备注" align="center" />
<el-table-column prop="createTime" label="创建时间" align="center" min-width="160" />
</el-table>
<pagination class="mt10" background :total="detailTotal" :page.sync="detailQueryParams.pageNum" :limit.sync="detailQueryParams.pageSize" @pagination="getDetailList" />
<div slot="footer" class="dialog-footer">
<el-button type="text" @click="detailVisible = false">关闭</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { queryPackingDataBackList, queryPackingDataBackRecord } from '@/api/productManagement/proPackingDataBack.js'
export default {
name: 'printlabel',
data() {
return {
labelWidth: '100px',
pickerOptions: {
shortcuts: [
{
text: '今天',
onClick(picker) {
picker.$emit('pick', new Date())
},
},
{
text: '昨天',
onClick(picker) {
const date = new Date()
date.setTime(date.getTime() - 3600 * 1000 * 24)
picker.$emit('pick', date)
},
},
{
text: '一周前',
onClick(picker) {
const date = new Date()
date.setTime(date.getTime() - 3600 * 1000 * 24 * 7)
picker.$emit('pick', date)
},
},
],
},
formLabelWidth: '100px',
// 选中id数组
ids: [],
// 非单个禁用
single: true,
// 非多个禁用
multiple: true,
// 遮罩层
loading: false,
// 显示搜索条件
showSearch: true,
// 查询参数
queryParams: {
workOrder: '',
partNumber: '',
packingCode: '',
label: '',
machine: '',
startTime: '',
endTime: '',
sort: undefined,
sortType: undefined,
},
// 数据列表
dataList: [],
// 总记录数
total: 0,
// 详情弹窗相关
detailVisible: false,
detailTitle: '详情',
detailDataList: [],
detailTotal: 0,
detailLoading: false,
detailQueryParams: {
pageNum: 1,
pageSize: 30,
searchType: 0,
workOrder: '',
partNumber: '',
machine: '',
fillType: -1,
startTime: null,
endTime: null,
},
// 详情弹窗筛选参数
detailFilterParams: {
machine: '',
packingCode: '',
fillType: -1,
},
// 筛选后的详情数据列表
filteredDetailDataList: [],
}
},
created() {
// 列表数据查询
//this.getList()
},
methods: {
// 查询数据
getList() {
this.loading = true
queryPackingDataBackList(this.queryParams)
.then((res) => {
if (res.code === 200) {
this.dataList = res.data
}
this.loading = false
})
.catch(() => {
this.loading = false
})
},
// 自定义排序
sortChange(column) {
if (column.prop === null || column.order === null) {
this.queryParams.sort = undefined
this.queryParams.sortType = undefined
} else {
this.queryParams.sort = column.prop
this.queryParams.sortType = column.order
}
this.handleQuery()
},
/** 搜索按钮操作 */
handleQuery() {
this.getList()
},
// 重置查询操作
resetQuery() {
this.resetProperties(this.queryParams)
this.resetForm('queryForm')
this.handleQuery()
},
resetProperties(obj) {
for (let key in obj) {
if (typeof obj[key] === 'string') {
obj[key] = ''
} else if (typeof obj[key] === 'number') {
obj[key] = 0
} else if (obj[key] instanceof Date) {
obj[key] = null
}
}
},
// 显示详情弹窗
showDetail(row) {
this.detailQueryParams.searchType = row.searchType
this.detailQueryParams.workOrder = row.workOrder
this.detailQueryParams.partNumber = row.partNumber
this.detailQueryParams.machine = row.machine
this.detailQueryParams.startTime = this.queryParams.startTime
this.detailQueryParams.endTime = this.queryParams.endTime
this.detailQueryParams.pageNum = 1
// 重置筛选条件
this.resetDetailFilter()
this.getDetailList()
this.detailVisible = true
},
// 获取详情列表数据
getDetailList() {
this.detailLoading = true
// 将筛选参数合并到详情查询参数中
this.detailQueryParams.machine = this.detailFilterParams.machine
this.detailQueryParams.packingCode = this.detailFilterParams.packingCode
this.detailQueryParams.fillType = this.detailFilterParams.fillType
queryPackingDataBackRecord(this.detailQueryParams)
.then((res) => {
if (res.code === 200) {
this.detailDataList = res.data.result
this.detailTotal = res.data.totalNum
}
this.detailLoading = false
})
.catch(() => {
this.detailLoading = false
})
},
// 重置详情筛选条件
resetDetailFilter() {
this.detailFilterParams = {
machine: '',
packingCode: '',
}
this.getDetailList()
},
// 移除前端筛选方法
// filterDetailData() {
// const { machine, fullMsg, serialNumber } = this.detailFilterParams
// this.filteredDetailDataList = this.detailDataList.filter((item) => {
// const machineMatch = machine === '' || item.machine === machine
// const fullMsgMatch = fullMsg === '' || item.fullMsg === fullMsg
// // 新增流水号匹配逻辑
// const serialNumberMatch = !serialNumber || (item.packageLabel && item.packageLabel.slice(-5).includes(serialNumber))
// return machineMatch && fullMsgMatch && serialNumberMatch
// })
// },
},
}
</script>