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