8 changed files with 1035 additions and 3 deletions
-
4index.html
-
19src/api/purchase/purchaseManage.js
-
BINsrc/assets/img/ccl.png
-
2src/views/main-navbar.vue
-
357src/views/modules/purchase/cancelReceipt.vue
-
302src/views/modules/purchase/inspectionResults.vue
-
354src/views/modules/purchase/receiptRecords.vue
-
BINstatic/img/ccl.ico
@ -0,0 +1,19 @@ |
|||
import { createAPI } from "@/utils/httpRequest.js"; |
|||
|
|||
// 获取采购订单接收记录列表
|
|||
export const getReceiptRecordList = data => createAPI(`purchase/getReceiptRecordList`, 'POST', data) |
|||
|
|||
// 获取接收记录详情(包含事务历史和检验记录)
|
|||
export const getReceiptRecordDetail = data => createAPI(`purchase/getReceiptRecordDetail`, 'POST', data) |
|||
|
|||
// 获取可取消的接收记录列表
|
|||
export const getCancelableReceiptList = data => createAPI(`purchase/getCancelableReceiptList`, 'POST', data) |
|||
|
|||
// 取消采购订单接收
|
|||
export const cancelReceipt = data => createAPI(`purchase/cancelReceipt`, 'POST', data) |
|||
|
|||
// 获取已检验合格的接收记录列表
|
|||
export const getInspectedReceiptList = data => createAPI(`purchase/getInspectedReceiptList`, 'POST', data) |
|||
|
|||
// 同步IFS检验记录
|
|||
export const syncIfsInspectionRecords = data => createAPI(`purchase/syncIfsInspectionRecords`, 'POST', data) |
|||
|
After Width: 776 | Height: 338 | Size: 8.0 KiB |
@ -0,0 +1,357 @@ |
|||
<template> |
|||
<div class="mod-config"> |
|||
<el-form :inline="true" label-position="top"> |
|||
<el-form-item label="工厂编码"> |
|||
<el-input style="width: 120px;" v-model="queryHeaderData.site"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="接收单号"> |
|||
<el-input style="width: 120px;" v-model="queryHeaderData.receiptNo"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="物料编码"> |
|||
<el-input style="width: 120px;" v-model="queryHeaderData.partNo"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="批次号"> |
|||
<el-input style="width: 120px;" v-model="queryHeaderData.batchNo"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="供应商编码"> |
|||
<el-input style="width: 120px;" v-model="queryHeaderData.supplierId"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="开始日期"> |
|||
<el-date-picker |
|||
v-model="queryHeaderData.startDate" |
|||
type="date" |
|||
placeholder="选择日期" |
|||
style="width: 120px;"> |
|||
</el-date-picker> |
|||
</el-form-item> |
|||
<el-form-item label="结束日期"> |
|||
<el-date-picker |
|||
v-model="queryHeaderData.endDate" |
|||
type="date" |
|||
placeholder="选择日期" |
|||
style="width: 120px;"> |
|||
</el-date-picker> |
|||
</el-form-item> |
|||
<el-form-item style="margin-top: 20px;"> |
|||
<el-button @click="getDataList('Y')" type="primary">查询</el-button> |
|||
<el-button @click="resetQuery">重置</el-button> |
|||
<el-button @click="cancelSelectedReceipts" type="danger" :disabled="dataListSelections.length === 0">取消接收</el-button> |
|||
</el-form-item> |
|||
</el-form> |
|||
|
|||
<!-- 数据表格 --> |
|||
<el-table |
|||
:data="dataList" |
|||
border |
|||
v-loading="dataListLoading" |
|||
@selection-change="selectionChangeHandle" |
|||
style="width: 100%;"> |
|||
<el-table-column |
|||
type="selection" |
|||
header-align="center" |
|||
align="center" |
|||
width="50"> |
|||
</el-table-column> |
|||
<el-table-column |
|||
prop="site" |
|||
header-align="center" |
|||
align="center" |
|||
label="工厂编码" |
|||
width="100"> |
|||
</el-table-column> |
|||
<el-table-column |
|||
prop="receiptNo" |
|||
header-align="center" |
|||
align="center" |
|||
label="接收单号" |
|||
width="140"> |
|||
</el-table-column> |
|||
<el-table-column |
|||
prop="itemNo" |
|||
header-align="center" |
|||
align="center" |
|||
label="行号" |
|||
width="80"> |
|||
</el-table-column> |
|||
<el-table-column |
|||
prop="partNo" |
|||
header-align="center" |
|||
align="center" |
|||
label="物料编码" |
|||
width="120"> |
|||
</el-table-column> |
|||
<el-table-column |
|||
prop="batchNo" |
|||
header-align="center" |
|||
align="center" |
|||
label="批次号" |
|||
width="120"> |
|||
</el-table-column> |
|||
<el-table-column |
|||
prop="locationId" |
|||
header-align="center" |
|||
align="center" |
|||
label="库位" |
|||
width="100"> |
|||
</el-table-column> |
|||
<el-table-column |
|||
prop="arriveQty" |
|||
header-align="center" |
|||
align="center" |
|||
label="到货数量" |
|||
width="100"> |
|||
</el-table-column> |
|||
<el-table-column |
|||
prop="qtyReceived" |
|||
header-align="center" |
|||
align="center" |
|||
label="已接收数量" |
|||
width="110"> |
|||
</el-table-column> |
|||
<el-table-column |
|||
prop="orderNo" |
|||
header-align="center" |
|||
align="center" |
|||
label="订单号" |
|||
width="120"> |
|||
</el-table-column> |
|||
<el-table-column |
|||
prop="receiveDate" |
|||
header-align="center" |
|||
align="center" |
|||
label="接收日期" |
|||
width="110"> |
|||
</el-table-column> |
|||
<el-table-column |
|||
prop="supplierId" |
|||
header-align="center" |
|||
align="center" |
|||
label="供应商编码" |
|||
width="120"> |
|||
</el-table-column> |
|||
<el-table-column |
|||
prop="receiver" |
|||
header-align="center" |
|||
align="center" |
|||
label="接收人" |
|||
width="100"> |
|||
</el-table-column> |
|||
<el-table-column |
|||
prop="status" |
|||
header-align="center" |
|||
align="center" |
|||
label="状态" |
|||
width="100"> |
|||
<template slot-scope="scope"> |
|||
<el-tag v-if="scope.row.status === 'RECEIVED'" type="success">已接收</el-tag> |
|||
<el-tag v-else-if="scope.row.status === 'CANCELLED'" type="danger">已取消</el-tag> |
|||
<el-tag v-else type="info">{{ scope.row.status }}</el-tag> |
|||
</template> |
|||
</el-table-column> |
|||
<el-table-column |
|||
fixed="right" |
|||
header-align="center" |
|||
align="center" |
|||
width="150" |
|||
label="操作"> |
|||
<template slot-scope="scope"> |
|||
<el-button @click="cancelSingleReceipt(scope.row)" type="text" size="small" :disabled="scope.row.status !== 'RECEIVED'">取消</el-button> |
|||
</template> |
|||
</el-table-column> |
|||
</el-table> |
|||
|
|||
<!-- 分页 --> |
|||
<el-pagination |
|||
@size-change="sizeChangeHandle" |
|||
@current-change="currentChangeHandle" |
|||
:current-page="pageIndex" |
|||
:page-sizes="[10, 20, 50, 100]" |
|||
:page-size="pageSize" |
|||
:total="totalPage" |
|||
layout="total, sizes, prev, pager, next, jumper"> |
|||
</el-pagination> |
|||
|
|||
<!-- 取消接收对话框 --> |
|||
<el-dialog |
|||
title="取消接收" |
|||
:visible.sync="cancelDialogVisible" |
|||
width="500px" |
|||
:close-on-click-modal="false"> |
|||
<el-form :model="cancelForm" :rules="cancelRules" ref="cancelForm" label-width="100px"> |
|||
<el-form-item label="取消原因" prop="cancelReason"> |
|||
<el-input |
|||
type="textarea" |
|||
:rows="4" |
|||
placeholder="请输入取消原因" |
|||
v-model="cancelForm.cancelReason"> |
|||
</el-input> |
|||
</el-form-item> |
|||
</el-form> |
|||
<span slot="footer" class="dialog-footer"> |
|||
<el-button @click="cancelDialogVisible = false">取 消</el-button> |
|||
<el-button type="primary" @click="confirmCancel" :loading="cancelLoading">确 定</el-button> |
|||
</span> |
|||
</el-dialog> |
|||
</div> |
|||
</template> |
|||
|
|||
<script> |
|||
import { getCancelableReceiptList, cancelReceipt } from '@/api/purchase/purchaseManage' |
|||
|
|||
export default { |
|||
data () { |
|||
return { |
|||
favorite: false, |
|||
dataList: [], |
|||
pageIndex: 1, |
|||
pageSize: 10, |
|||
totalPage: 0, |
|||
dataListLoading: false, |
|||
dataListSelections: [], |
|||
queryHeaderData: { |
|||
site: '', |
|||
receiptNo: '', |
|||
partNo: '', |
|||
batchNo: '', |
|||
supplierId: '', |
|||
startDate: '', |
|||
endDate: '' |
|||
}, |
|||
cancelDialogVisible: false, |
|||
cancelLoading: false, |
|||
cancelForm: { |
|||
cancelReason: '' |
|||
}, |
|||
cancelRules: { |
|||
cancelReason: [ |
|||
{ required: true, message: '请输入取消原因', trigger: 'blur' } |
|||
] |
|||
}, |
|||
currentCancelRecords: [] |
|||
} |
|||
}, |
|||
activated () { |
|||
this.getDataList() |
|||
}, |
|||
methods: { |
|||
favoriteFunction () { |
|||
this.favorite = !this.favorite |
|||
}, |
|||
// 获取数据列表 |
|||
getDataList (flag) { |
|||
if (flag === 'Y') { |
|||
this.pageIndex = 1 |
|||
} |
|||
this.dataListLoading = true |
|||
const params = { |
|||
page: this.pageIndex, |
|||
size: this.pageSize, |
|||
...this.queryHeaderData |
|||
} |
|||
getCancelableReceiptList(params).then(({data}) => { |
|||
if (data && data.code === 0) { |
|||
this.dataList = data.page.list |
|||
this.totalPage = data.page.totalCount |
|||
} else { |
|||
this.dataList = [] |
|||
this.totalPage = 0 |
|||
} |
|||
this.dataListLoading = false |
|||
}) |
|||
}, |
|||
// 每页数 |
|||
sizeChangeHandle (val) { |
|||
this.pageSize = val |
|||
this.pageIndex = 1 |
|||
this.getDataList() |
|||
}, |
|||
// 当前页 |
|||
currentChangeHandle (val) { |
|||
this.pageIndex = val |
|||
this.getDataList() |
|||
}, |
|||
// 多选 |
|||
selectionChangeHandle (val) { |
|||
this.dataListSelections = val |
|||
}, |
|||
// 取消单个接收记录 |
|||
cancelSingleReceipt (row) { |
|||
this.currentCancelRecords = [row] |
|||
this.cancelForm.cancelReason = '' |
|||
this.cancelDialogVisible = true |
|||
}, |
|||
// 批量取消接收记录 |
|||
cancelSelectedReceipts () { |
|||
if (this.dataListSelections.length === 0) { |
|||
this.$message.warning('请选择要取消的记录') |
|||
return |
|||
} |
|||
this.currentCancelRecords = this.dataListSelections |
|||
this.cancelForm.cancelReason = '' |
|||
this.cancelDialogVisible = true |
|||
}, |
|||
// 确认取消 |
|||
confirmCancel () { |
|||
this.$refs.cancelForm.validate((valid) => { |
|||
if (valid) { |
|||
this.cancelLoading = true |
|||
const promises = this.currentCancelRecords.map(record => { |
|||
return cancelReceipt({ |
|||
receiptNo: record.receiptNo, |
|||
site: record.site, |
|||
itemNo: record.itemNo, |
|||
cancelReason: this.cancelForm.cancelReason |
|||
}) |
|||
}) |
|||
|
|||
Promise.all(promises).then(results => { |
|||
let successCount = 0 |
|||
let errorMessages = [] |
|||
|
|||
results.forEach((result, index) => { |
|||
if (result.data && result.data.code === 0) { |
|||
successCount++ |
|||
} else { |
|||
const record = this.currentCancelRecords[index] |
|||
errorMessages.push(`${record.receiptNo}: ${result.data.msg || '取消失败'}`) |
|||
} |
|||
}) |
|||
|
|||
if (successCount > 0) { |
|||
this.$message.success(`成功取消 ${successCount} 条记录`) |
|||
this.getDataList() |
|||
} |
|||
|
|||
if (errorMessages.length > 0) { |
|||
this.$message.error(`部分记录取消失败:\n${errorMessages.join('\n')}`) |
|||
} |
|||
|
|||
this.cancelDialogVisible = false |
|||
this.cancelLoading = false |
|||
}).catch(() => { |
|||
this.$message.error('取消操作失败') |
|||
this.cancelLoading = false |
|||
}) |
|||
} |
|||
}) |
|||
}, |
|||
// 重置查询 |
|||
resetQuery () { |
|||
this.queryHeaderData = { |
|||
site: '', |
|||
receiptNo: '', |
|||
partNo: '', |
|||
batchNo: '', |
|||
supplierId: '', |
|||
startDate: '', |
|||
endDate: '' |
|||
} |
|||
this.getDataList('Y') |
|||
} |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style scoped> |
|||
|
|||
</style> |
|||
@ -0,0 +1,302 @@ |
|||
<template> |
|||
<div class="mod-config"> |
|||
<el-form :inline="true" label-position="top"> |
|||
<el-form-item label="工厂编码"> |
|||
<el-input style="width: 120px;" v-model="queryHeaderData.site"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="接收单号"> |
|||
<el-input style="width: 120px;" v-model="queryHeaderData.receiptNo"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="物料编码"> |
|||
<el-input style="width: 120px;" v-model="queryHeaderData.partNo"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="批次号"> |
|||
<el-input style="width: 120px;" v-model="queryHeaderData.batchNo"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="供应商编码"> |
|||
<el-input style="width: 120px;" v-model="queryHeaderData.supplierId"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="开始日期"> |
|||
<el-date-picker |
|||
v-model="queryHeaderData.startDate" |
|||
type="date" |
|||
placeholder="选择日期" |
|||
style="width: 120px;"> |
|||
</el-date-picker> |
|||
</el-form-item> |
|||
<el-form-item label="结束日期"> |
|||
<el-date-picker |
|||
v-model="queryHeaderData.endDate" |
|||
type="date" |
|||
placeholder="选择日期" |
|||
style="width: 120px;"> |
|||
</el-date-picker> |
|||
</el-form-item> |
|||
<el-form-item style="margin-top: 20px;"> |
|||
<el-button @click="getDataList('Y')" type="primary">查询</el-button> |
|||
<el-button @click="resetQuery">重置</el-button> |
|||
<el-button @click="syncIfsRecords" type="success" :loading="syncLoading">同步IFS检验记录</el-button> |
|||
</el-form-item> |
|||
</el-form> |
|||
|
|||
<!-- 同步结果提示 --> |
|||
<el-alert |
|||
v-if="syncMessage" |
|||
:title="syncMessage" |
|||
:type="syncMessageType" |
|||
:closable="true" |
|||
@close="syncMessage = ''" |
|||
style="margin-bottom: 20px;"> |
|||
</el-alert> |
|||
|
|||
<!-- 数据表格 --> |
|||
<el-table |
|||
:data="dataList" |
|||
border |
|||
v-loading="dataListLoading" |
|||
@selection-change="selectionChangeHandle" |
|||
style="width: 100%;"> |
|||
<el-table-column |
|||
type="selection" |
|||
header-align="center" |
|||
align="center" |
|||
width="50"> |
|||
</el-table-column> |
|||
<el-table-column |
|||
prop="site" |
|||
header-align="center" |
|||
align="center" |
|||
label="工厂编码"> |
|||
</el-table-column> |
|||
<el-table-column |
|||
prop="receiptNo" |
|||
header-align="center" |
|||
align="center" |
|||
label="接收单号"> |
|||
</el-table-column> |
|||
<el-table-column |
|||
prop="receiveDate" |
|||
header-align="center" |
|||
align="center" |
|||
label="接收日期"> |
|||
</el-table-column> |
|||
<el-table-column |
|||
prop="partNo" |
|||
header-align="center" |
|||
align="center" |
|||
label="物料编码"> |
|||
</el-table-column> |
|||
<el-table-column |
|||
prop="batchNo" |
|||
header-align="center" |
|||
align="center" |
|||
label="批次号"> |
|||
</el-table-column> |
|||
<el-table-column |
|||
prop="qtyApproved" |
|||
header-align="center" |
|||
align="center" |
|||
label="合格数量"> |
|||
</el-table-column> |
|||
<el-table-column |
|||
prop="inspectionTime" |
|||
header-align="center" |
|||
align="center" |
|||
label="检验时间"> |
|||
</el-table-column> |
|||
<el-table-column |
|||
prop="inspector" |
|||
header-align="center" |
|||
align="center" |
|||
label="检验员"> |
|||
</el-table-column> |
|||
<el-table-column |
|||
prop="inspectionRemark" |
|||
header-align="center" |
|||
align="center" |
|||
label="检验备注" |
|||
show-overflow-tooltip> |
|||
</el-table-column> |
|||
<el-table-column |
|||
prop="supplierId" |
|||
header-align="center" |
|||
align="center" |
|||
label="供应商编码"> |
|||
</el-table-column> |
|||
<el-table-column |
|||
prop="receiver" |
|||
header-align="center" |
|||
align="center" |
|||
label="接收人"> |
|||
</el-table-column> |
|||
<el-table-column |
|||
prop="warehouseId" |
|||
header-align="center" |
|||
align="center" |
|||
label="仓库"> |
|||
</el-table-column> |
|||
</el-table> |
|||
|
|||
<!-- 分页 --> |
|||
<el-pagination |
|||
@size-change="sizeChangeHandle" |
|||
@current-change="currentChangeHandle" |
|||
:current-page="pageIndex" |
|||
:page-sizes="[10, 20, 50, 100]" |
|||
:page-size="pageSize" |
|||
:total="totalPage" |
|||
layout="total, sizes, prev, pager, next, jumper"> |
|||
</el-pagination> |
|||
|
|||
<!-- 同步确认对话框 --> |
|||
<el-dialog |
|||
title="同步IFS检验记录" |
|||
:visible.sync="syncDialogVisible" |
|||
width="400px" |
|||
:close-on-click-modal="false"> |
|||
<div> |
|||
<p>确认要从IFS系统同步最新的检验结果吗?</p> |
|||
<p style="color: #909399; font-size: 12px;">此操作将更新本地的检验记录数据。</p> |
|||
</div> |
|||
<span slot="footer" class="dialog-footer"> |
|||
<el-button @click="syncDialogVisible = false">取 消</el-button> |
|||
<el-button type="primary" @click="confirmSync" :loading="syncLoading">确 定</el-button> |
|||
</span> |
|||
</el-dialog> |
|||
</div> |
|||
</template> |
|||
|
|||
<script> |
|||
import { getInspectedReceiptList, syncIfsInspectionRecords } from '@/api/purchase/purchaseManage' |
|||
|
|||
export default { |
|||
data () { |
|||
return { |
|||
favorite: false, |
|||
dataList: [], |
|||
pageIndex: 1, |
|||
pageSize: 10, |
|||
totalPage: 0, |
|||
dataListLoading: false, |
|||
dataListSelections: [], |
|||
queryHeaderData: { |
|||
site: '', |
|||
receiptNo: '', |
|||
partNo: '', |
|||
batchNo: '', |
|||
supplierId: '', |
|||
startDate: '', |
|||
endDate: '' |
|||
}, |
|||
syncDialogVisible: false, |
|||
syncLoading: false, |
|||
syncMessage: '', |
|||
syncMessageType: 'success' |
|||
} |
|||
}, |
|||
activated () { |
|||
this.getDataList() |
|||
}, |
|||
methods: { |
|||
favoriteFunction () { |
|||
this.favorite = !this.favorite |
|||
}, |
|||
// 获取数据列表 |
|||
getDataList (flag) { |
|||
if (flag === 'Y') { |
|||
this.pageIndex = 1 |
|||
} |
|||
this.dataListLoading = true |
|||
const params = { |
|||
page: this.pageIndex, |
|||
size: this.pageSize, |
|||
...this.queryHeaderData |
|||
} |
|||
getInspectedReceiptList(params).then(({data}) => { |
|||
if (data && data.code === 0) { |
|||
this.dataList = data.page.list |
|||
this.totalPage = data.page.totalCount |
|||
} else { |
|||
this.dataList = [] |
|||
this.totalPage = 0 |
|||
} |
|||
this.dataListLoading = false |
|||
}) |
|||
}, |
|||
// 每页数 |
|||
sizeChangeHandle (val) { |
|||
this.pageSize = val |
|||
this.pageIndex = 1 |
|||
this.getDataList() |
|||
}, |
|||
// 当前页 |
|||
currentChangeHandle (val) { |
|||
this.pageIndex = val |
|||
this.getDataList() |
|||
}, |
|||
// 多选 |
|||
selectionChangeHandle (val) { |
|||
this.dataListSelections = val |
|||
}, |
|||
// 同步IFS记录 |
|||
syncIfsRecords () { |
|||
if (!this.queryHeaderData.site) { |
|||
this.$message.warning('请先选择工厂编码') |
|||
return |
|||
} |
|||
this.syncDialogVisible = true |
|||
}, |
|||
// 确认同步 |
|||
confirmSync () { |
|||
this.syncLoading = true |
|||
this.syncDialogVisible = false |
|||
|
|||
const params = { |
|||
site: this.queryHeaderData.site |
|||
} |
|||
|
|||
syncIfsInspectionRecords(params).then(({data}) => { |
|||
this.syncLoading = false |
|||
if (data && data.code === 0) { |
|||
this.syncMessage = data.msg || '同步成功' |
|||
this.syncMessageType = 'success' |
|||
this.getDataList() // 刷新列表 |
|||
} else { |
|||
this.syncMessage = data.msg || '同步失败' |
|||
this.syncMessageType = 'error' |
|||
} |
|||
|
|||
// 5秒后自动隐藏消息 |
|||
setTimeout(() => { |
|||
this.syncMessage = '' |
|||
}, 5000) |
|||
}).catch(() => { |
|||
this.syncLoading = false |
|||
this.syncMessage = '同步过程中发生错误' |
|||
this.syncMessageType = 'error' |
|||
|
|||
setTimeout(() => { |
|||
this.syncMessage = '' |
|||
}, 5000) |
|||
}) |
|||
}, |
|||
// 重置查询 |
|||
resetQuery () { |
|||
this.queryHeaderData = { |
|||
site: '', |
|||
receiptNo: '', |
|||
partNo: '', |
|||
batchNo: '', |
|||
supplierId: '', |
|||
startDate: '', |
|||
endDate: '' |
|||
} |
|||
this.getDataList('Y') |
|||
} |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style scoped> |
|||
|
|||
</style> |
|||
@ -0,0 +1,354 @@ |
|||
<template> |
|||
<div class="mod-config"> |
|||
<el-form :inline="true" label-position="top"> |
|||
<el-form-item label="工厂编码"> |
|||
<el-input style="width: 120px;" v-model="queryHeaderData.site"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="接收单号"> |
|||
<el-input style="width: 120px;" v-model="queryHeaderData.receiptNo"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="物料编码"> |
|||
<el-input style="width: 120px;" v-model="queryHeaderData.partNo"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="批次号"> |
|||
<el-input style="width: 120px;" v-model="queryHeaderData.batchNo"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="供应商编码"> |
|||
<el-input style="width: 120px;" v-model="queryHeaderData.supplierId"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="接收人"> |
|||
<el-input style="width: 120px;" v-model="queryHeaderData.receiver"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="开始日期"> |
|||
<el-date-picker |
|||
v-model="queryHeaderData.startDate" |
|||
type="date" |
|||
placeholder="选择日期" |
|||
style="width: 120px;"> |
|||
</el-date-picker> |
|||
</el-form-item> |
|||
<el-form-item label="结束日期"> |
|||
<el-date-picker |
|||
v-model="queryHeaderData.endDate" |
|||
type="date" |
|||
placeholder="选择日期" |
|||
style="width: 120px;"> |
|||
</el-date-picker> |
|||
</el-form-item> |
|||
<el-form-item style="margin-top: 20px;"> |
|||
<el-button @click="getDataList('Y')" type="primary">查询</el-button> |
|||
<el-button @click="resetQuery">重置</el-button> |
|||
</el-form-item> |
|||
</el-form> |
|||
|
|||
<!-- 主数据表格 --> |
|||
<el-table |
|||
:data="dataList" |
|||
border :height="height" |
|||
v-loading="dataListLoading" |
|||
@selection-change="selectionChangeHandle" |
|||
@current-change="currentChangeHandle" |
|||
style="width: 100%;"> |
|||
<el-table-column |
|||
type="selection" |
|||
header-align="center" |
|||
align="center" |
|||
width="50"> |
|||
</el-table-column> |
|||
<el-table-column |
|||
prop="site" |
|||
header-align="center" |
|||
align="center" |
|||
label="工厂编码" |
|||
width="100"> |
|||
</el-table-column> |
|||
<el-table-column |
|||
prop="receiptNo" |
|||
header-align="center" |
|||
align="center" |
|||
label="接收单号" |
|||
width="140"> |
|||
</el-table-column> |
|||
<el-table-column |
|||
prop="itemNo" |
|||
header-align="center" |
|||
align="center" |
|||
label="行号" |
|||
width="80"> |
|||
</el-table-column> |
|||
<el-table-column |
|||
prop="partNo" |
|||
header-align="center" |
|||
align="center" |
|||
label="物料编码" |
|||
width="120"> |
|||
</el-table-column> |
|||
<el-table-column |
|||
prop="batchNo" |
|||
header-align="center" |
|||
align="center" |
|||
label="批次号" |
|||
width="120"> |
|||
</el-table-column> |
|||
<el-table-column |
|||
prop="arriveQty" |
|||
header-align="center" |
|||
align="center" |
|||
label="到货数量" |
|||
width="100"> |
|||
</el-table-column> |
|||
<el-table-column |
|||
prop="qtyReceived" |
|||
header-align="center" |
|||
align="center" |
|||
label="已接收数量" |
|||
width="110"> |
|||
</el-table-column> |
|||
<el-table-column |
|||
prop="locationId" |
|||
header-align="center" |
|||
align="center" |
|||
label="库位" |
|||
width="100"> |
|||
</el-table-column> |
|||
<el-table-column |
|||
prop="status" |
|||
header-align="center" |
|||
align="center" |
|||
label="状态" |
|||
width="100"> |
|||
<template slot-scope="scope"> |
|||
<el-tag v-if="scope.row.status === 'RECEIVED'" type="success">已接收</el-tag> |
|||
<el-tag v-else-if="scope.row.status === 'CANCELLED'" type="danger">已取消</el-tag> |
|||
<el-tag v-else type="info">{{ scope.row.status }}</el-tag> |
|||
</template> |
|||
</el-table-column> |
|||
<el-table-column |
|||
prop="needInspectFlag" |
|||
header-align="center" |
|||
align="center" |
|||
label="需要检验" |
|||
width="100"> |
|||
<template slot-scope="scope"> |
|||
<el-tag v-if="scope.row.needInspectFlag === 'Y'" type="warning">是</el-tag> |
|||
<el-tag v-else type="success">否</el-tag> |
|||
</template> |
|||
</el-table-column> |
|||
<el-table-column |
|||
prop="orderNo" |
|||
header-align="center" |
|||
align="center" |
|||
label="订单号" |
|||
width="120"> |
|||
</el-table-column> |
|||
<el-table-column |
|||
prop="receiveDate" |
|||
header-align="center" |
|||
align="center" |
|||
label="接收日期" |
|||
width="110"> |
|||
</el-table-column> |
|||
<el-table-column |
|||
prop="supplierId" |
|||
header-align="center" |
|||
align="center" |
|||
label="供应商编码" |
|||
width="120"> |
|||
</el-table-column> |
|||
<el-table-column |
|||
prop="receiver" |
|||
header-align="center" |
|||
align="center" |
|||
label="接收人" |
|||
width="100"> |
|||
</el-table-column> |
|||
<el-table-column |
|||
prop="remark" |
|||
header-align="center" |
|||
align="center" |
|||
label="备注" |
|||
show-overflow-tooltip> |
|||
</el-table-column> |
|||
</el-table> |
|||
|
|||
<!-- 分页 --> |
|||
<el-pagination |
|||
@size-change="sizeChangeHandle" |
|||
@current-change="currentChangeHandle" |
|||
:current-page="pageIndex" |
|||
:page-sizes="[10, 20, 50, 100]" |
|||
:page-size="pageSize" |
|||
:total="totalPage" |
|||
layout="total, sizes, prev, pager, next, jumper"> |
|||
</el-pagination> |
|||
|
|||
<!-- 详情页签 --> |
|||
<div v-if="currentRecord" style="margin-top: 20px;"> |
|||
<el-tabs v-model="activeTab" @tab-click="handleTabClick"> |
|||
<el-tab-pane label="事务历史" name="transHistory"> |
|||
<el-table |
|||
:data="transHistoryList" |
|||
border |
|||
style="width: 100%;"> |
|||
<el-table-column prop="transNo" label="事务号"></el-table-column> |
|||
<el-table-column prop="transType" label="事务类型"></el-table-column> |
|||
<el-table-column prop="transDate" label="事务日期"></el-table-column> |
|||
<el-table-column prop="partNo" label="物料编码"></el-table-column> |
|||
<el-table-column prop="batchNo" label="批次号"></el-table-column> |
|||
<el-table-column prop="transQty" label="事务数量"></el-table-column> |
|||
<el-table-column prop="warehouseId" label="仓库"></el-table-column> |
|||
<el-table-column prop="locationId" label="库位"></el-table-column> |
|||
<el-table-column prop="userName" label="操作人"></el-table-column> |
|||
<el-table-column prop="remark" label="备注"></el-table-column> |
|||
</el-table> |
|||
</el-tab-pane> |
|||
<el-tab-pane label="检验记录" name="inspectionRecords"> |
|||
<el-table |
|||
:data="inspectionRecordsList" |
|||
border |
|||
style="width: 100%;"> |
|||
<el-table-column prop="itemNo" label="行号"></el-table-column> |
|||
<el-table-column prop="partNo" label="物料编码"></el-table-column> |
|||
<el-table-column prop="batchNo" label="批次号"></el-table-column> |
|||
<el-table-column prop="arriveQty" label="到货数量"></el-table-column> |
|||
<el-table-column prop="qtyToInspect" label="待检数量"></el-table-column> |
|||
<el-table-column prop="qtyInspected" label="已检数量"></el-table-column> |
|||
<el-table-column prop="qtyApproved" label="合格数量"></el-table-column> |
|||
<el-table-column prop="qtyReturned" label="退货数量"></el-table-column> |
|||
<el-table-column prop="qtyScrap" label="报废数量"></el-table-column> |
|||
<el-table-column prop="inspectCode" label="检验代码"></el-table-column> |
|||
<el-table-column prop="inspectType" label="检验类型"></el-table-column> |
|||
<el-table-column prop="inspectionTime" label="检验时间"></el-table-column> |
|||
<el-table-column prop="inspector" label="检验员"></el-table-column> |
|||
<el-table-column prop="inspectionRemark" label="检验备注"></el-table-column> |
|||
</el-table> |
|||
</el-tab-pane> |
|||
</el-tabs> |
|||
</div> |
|||
</div> |
|||
</template> |
|||
|
|||
<script> |
|||
import { getReceiptRecordList, getReceiptRecordDetail } from '@/api/purchase/purchaseManage' |
|||
|
|||
export default { |
|||
data () { |
|||
return { |
|||
height: 200, |
|||
favorite: false, |
|||
dataList: [], |
|||
pageIndex: 1, |
|||
pageSize: 10, |
|||
totalPage: 0, |
|||
dataListLoading: false, |
|||
dataListSelections: [], |
|||
queryHeaderData: { |
|||
site: '', |
|||
receiptNo: '', |
|||
partNo: '', |
|||
batchNo: '', |
|||
supplierId: '', |
|||
receiver: '', |
|||
startDate: '', |
|||
endDate: '' |
|||
}, |
|||
currentRecord: null, |
|||
activeTab: 'transHistory', |
|||
transHistoryList: [], |
|||
inspectionRecordsList: [] |
|||
} |
|||
}, |
|||
mounted() { |
|||
this.$nextTick(() => { |
|||
this.height = (window.innerHeight - 240)/2; |
|||
}) |
|||
}, |
|||
activated () { |
|||
this.getDataList() |
|||
}, |
|||
methods: { |
|||
favoriteFunction () { |
|||
this.favorite = !this.favorite |
|||
}, |
|||
// 获取数据列表 |
|||
getDataList (flag) { |
|||
if (flag === 'Y') { |
|||
this.pageIndex = 1 |
|||
} |
|||
this.dataListLoading = true |
|||
const params = { |
|||
page: this.pageIndex, |
|||
size: this.pageSize, |
|||
...this.queryHeaderData |
|||
} |
|||
getReceiptRecordList(params).then(({data}) => { |
|||
if (data && data.code === 0) { |
|||
this.dataList = data.page.list |
|||
this.totalPage = data.page.totalCount |
|||
} else { |
|||
this.dataList = [] |
|||
this.totalPage = 0 |
|||
} |
|||
this.dataListLoading = false |
|||
}) |
|||
}, |
|||
// 每页数 |
|||
sizeChangeHandle (val) { |
|||
this.pageSize = val |
|||
this.pageIndex = 1 |
|||
this.getDataList() |
|||
}, |
|||
// 当前页 |
|||
currentChangeHandle (val) { |
|||
this.pageIndex = val |
|||
this.getDataList() |
|||
}, |
|||
// 多选 |
|||
selectionChangeHandle (val) { |
|||
this.dataListSelections = val |
|||
}, |
|||
// 行选择 |
|||
currentChangeHandle (currentRow) { |
|||
this.currentRecord = currentRow |
|||
if (currentRow) { |
|||
this.getRecordDetail(currentRow) |
|||
} |
|||
}, |
|||
// 获取记录详情 |
|||
getRecordDetail (record) { |
|||
const params = { |
|||
receiptNo: record.receiptNo, |
|||
site: record.site |
|||
} |
|||
getReceiptRecordDetail(params).then(({data}) => { |
|||
if (data && data.code === 0) { |
|||
this.transHistoryList = data.data.transHistory || [] |
|||
this.inspectionRecordsList = data.data.inspectionRecords || [] |
|||
} |
|||
}) |
|||
}, |
|||
// 页签切换 |
|||
handleTabClick (tab) { |
|||
// 可以在这里添加页签切换的逻辑 |
|||
}, |
|||
// 重置查询 |
|||
resetQuery () { |
|||
this.queryHeaderData = { |
|||
site: '', |
|||
receiptNo: '', |
|||
partNo: '', |
|||
batchNo: '', |
|||
supplierId: '', |
|||
receiver: '', |
|||
startDate: '', |
|||
endDate: '' |
|||
} |
|||
this.getDataList('Y') |
|||
} |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style scoped> |
|||
|
|||
</style> |
|||
|
After Width: 529 | Height: 535 | Size: 19 KiB |
Write
Preview
Loading…
Cancel
Save
Reference in new issue