|
|
|
@ -107,7 +107,7 @@ |
|
|
|
</el-radio-group> |
|
|
|
</el-form-item> |
|
|
|
</el-col> |
|
|
|
<el-col :span="2"> |
|
|
|
<!-- <el-col :span="2"> |
|
|
|
<el-form-item label=" " v-if="orderType!=='baofei'"> |
|
|
|
<el-button type="primary" @click="openOrderManageDialog()" class="">从订单添加</el-button> |
|
|
|
</el-form-item> |
|
|
|
@ -116,15 +116,32 @@ |
|
|
|
<el-form-item :label="'已添加订单(不保存)'" style="width: 100%" v-if="orderType!=='baofei'"> |
|
|
|
<el-input v-model="remark" style="width: 100%" readonly></el-input> |
|
|
|
</el-form-item> |
|
|
|
</el-col> |
|
|
|
</el-col> --> |
|
|
|
</el-row> |
|
|
|
<el-row :gutter="20"> |
|
|
|
<el-col :span="6"> |
|
|
|
<el-col :span="4" v-if="orderType!=='baofei'"> |
|
|
|
<el-form-item label="工厂编号"> |
|
|
|
<el-select |
|
|
|
v-model="materialDialogSite" |
|
|
|
placeholder="请选择Site" |
|
|
|
:loading="materialDialogSiteLoading" |
|
|
|
:disabled="seqNoList.length > 0" |
|
|
|
style="width: 100%"> |
|
|
|
<el-option |
|
|
|
v-for="item in materialDialogSiteOptions" |
|
|
|
:key="item.siteCode" |
|
|
|
:label="item.siteName" |
|
|
|
:value="item.siteCode"> |
|
|
|
</el-option> |
|
|
|
</el-select> |
|
|
|
</el-form-item> |
|
|
|
</el-col> |
|
|
|
<el-col :span="5"> |
|
|
|
<el-form-item label="物料号" v-if="orderType!=='baofei'"> |
|
|
|
<el-input v-model="partNo" @keyup.enter.native="addRowFromQuery" :disabled="orderType=='baofei'"></el-input> |
|
|
|
</el-form-item> |
|
|
|
</el-col> |
|
|
|
<el-col :span="8"> |
|
|
|
<el-col :span="10"> |
|
|
|
<el-form-item label=" "> |
|
|
|
<el-button type="primary" @click="addRowFromQuery()" :loading="addLineLoading" v-if="orderType!=='baofei'" |
|
|
|
class="">添加物料行</el-button> |
|
|
|
@ -177,6 +194,11 @@ |
|
|
|
<el-dialog :title="'订单添加(' + orderTypeText + ')'" :close-on-click-modal="false" v-drag :visible.sync="orderManageDialogVisible" width="1100px"> |
|
|
|
<el-form :inline="true" label-position="top" style="margin-left: 7px;margin-top: -5px;"> |
|
|
|
<el-row :gutter="20"> |
|
|
|
<el-col :span="4"> |
|
|
|
<el-form-item label="工厂编号"> |
|
|
|
<el-input :value="materialDialogSite" disabled style="width: 100%"></el-input> |
|
|
|
</el-form-item> |
|
|
|
</el-col> |
|
|
|
<el-col :span="5"> |
|
|
|
<el-form-item :label="'Order No'"> |
|
|
|
<el-input v-model="orderManageData.orderNo" @keyup.enter.native="addOrderToTempList()" placeholder="请输入订单号"></el-input> |
|
|
|
@ -203,7 +225,7 @@ |
|
|
|
<!-- 订单明细列表 - rqrq --> |
|
|
|
<el-table :height="400" :data="tempOrderList" border style="width: 100%;" v-loading="tempOrderListLoading"> |
|
|
|
<el-table-column prop="orderNo" header-align="center" align="center" min-width="120" label="订单号"></el-table-column> |
|
|
|
<el-table-column prop="subSite" header-align="center" align="center" min-width="100" label="Site"></el-table-column> |
|
|
|
<el-table-column prop="subSite" header-align="center" align="center" min-width="100" label="工厂编号"></el-table-column> |
|
|
|
<el-table-column prop="releaseNo" header-align="center" align="center" min-width="100" label="Release No"></el-table-column> |
|
|
|
<el-table-column prop="sequenceNo" header-align="center" align="center" min-width="100" label="Sequence No"></el-table-column> |
|
|
|
<el-table-column prop="componentPartNo" header-align="center" align="center" min-width="150" label="物料编码"></el-table-column> |
|
|
|
@ -282,6 +304,9 @@ |
|
|
|
<!-- 选择物料弹框 --> |
|
|
|
<el-dialog title="新增物料" :close-on-click-modal="false" v-drag :visible.sync="selectMaterialModalFlag" width="1080px"> |
|
|
|
<el-form :inline="true" label-position="top"> |
|
|
|
<el-form-item label="Site"> |
|
|
|
<el-input :value="selectMaterialDisplaySite" disabled style="width: 120px"></el-input> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="物料编号"> |
|
|
|
<el-input v-model="componentPartNo" style="width: 120px"></el-input> |
|
|
|
</el-form-item> |
|
|
|
@ -298,9 +323,14 @@ |
|
|
|
v-loading="selectMaterialLoading"> |
|
|
|
<el-table-column type="selection" header-align="center" align="center" :selectable="selectFlag" width="50"> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column prop="partNo" header-align="center" align="center" min-width="170" label="物料号"> |
|
|
|
<el-table-column prop="partNo" header-align="center" align="center" min-width="140" label="物料号"> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column header-align="center" align="center" min-width="80" label="Site"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
{{ scope.row.subSite || scope.row.site || selectMaterialDisplaySite }} |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column prop="height" header-align="center" align="center" min-width="80" label="高度"> |
|
|
|
<el-table-column prop="height" header-align="center" align="center" min-width="70" label="高度"> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column prop="isInWh" header-align="center" align="center" min-width="80" label="是否在立库"> |
|
|
|
</el-table-column> |
|
|
|
@ -333,9 +363,14 @@ |
|
|
|
@selection-change="handleSelectedSelectionChange" highlight-current-row style="width: 100%"> |
|
|
|
<el-table-column type="selection" header-align="center" align="center" :selectable="selectFlag" width="50"> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column prop="partNo" header-align="center" align="center" min-width="170" label="物料号"> |
|
|
|
<el-table-column prop="partNo" header-align="center" align="center" min-width="140" label="物料号"> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column header-align="center" align="center" min-width="80" label="Site"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
{{ scope.row.subSite || scope.row.site || selectMaterialDisplaySite }} |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column prop="height" header-align="center" align="center" min-width="80" label="高度"> |
|
|
|
<el-table-column prop="height" header-align="center" align="center" min-width="70" label="高度"> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column prop="isInWh" header-align="center" align="center" min-width="80" label="是否在立库"> |
|
|
|
</el-table-column> |
|
|
|
@ -530,6 +565,8 @@ import { |
|
|
|
haiAnGetShopOrderAndMaterialByShoporder as getShopOrderAndMaterialByShoporder, |
|
|
|
haiAnGetShopOrderFromIFSWithOrderNo as getShopOrderFromIFSWithOrderNo, |
|
|
|
} from '@/api/haianWarehouse/shopOrderIssueNotify.js' |
|
|
|
import { getUserAuthorizedSubSiteCodes } from '@/api/factory/accessSite' |
|
|
|
import { getAuthorizedSubSiteCodeList } from '@/utils/subSiteAuth' |
|
|
|
import noorderUploadExcel from '@/views/modules/noOrderIssue/noorder_upload_excel.vue' |
|
|
|
import baofeiUploadExcel from '@/views/modules/noOrderIssue/baofei_upload_excel.vue' |
|
|
|
import Chooselist from '@/views/modules/common/Chooselist_eam' |
|
|
|
@ -745,6 +782,24 @@ export default { |
|
|
|
fixed: false, |
|
|
|
columnWidth: 50, |
|
|
|
}, |
|
|
|
{ |
|
|
|
userId: this.$store.state.user.name, |
|
|
|
functionId: 555001, |
|
|
|
serialNumber: '555001Table1SubSite', |
|
|
|
tableId: '555001Table1', |
|
|
|
tableName: '领料申请工单子表', |
|
|
|
columnProp: 'subSite', |
|
|
|
headerAlign: 'center', |
|
|
|
align: 'center', |
|
|
|
columnLabel: '工厂编号', |
|
|
|
columnHidden: false, |
|
|
|
columnImage: false, |
|
|
|
columnSortable: false, |
|
|
|
sortLv: 0, |
|
|
|
status: true, |
|
|
|
fixed: false, |
|
|
|
columnWidth: 90, |
|
|
|
}, |
|
|
|
/* { |
|
|
|
userId: this.$store.state.user.name, |
|
|
|
functionId: 555001, |
|
|
|
@ -1060,6 +1115,24 @@ export default { |
|
|
|
fixed: '', |
|
|
|
columnWidth: 80, |
|
|
|
}, |
|
|
|
{ |
|
|
|
userId: this.$store.state.user.name, |
|
|
|
functionId: 701002, |
|
|
|
serialNumber: '701002Table3SubSite', |
|
|
|
tableId: '701002Table3', |
|
|
|
tableName: '申请单材料明细表', |
|
|
|
columnProp: 'subSite', |
|
|
|
headerAlign: 'center', |
|
|
|
align: 'center', |
|
|
|
columnLabel: '工厂编号', |
|
|
|
columnHidden: false, |
|
|
|
columnImage: false, |
|
|
|
columnSortable: false, |
|
|
|
sortLv: 0, |
|
|
|
status: true, |
|
|
|
fixed: '', |
|
|
|
columnWidth: 90, |
|
|
|
}, |
|
|
|
{ |
|
|
|
userId: this.$store.state.user.name, |
|
|
|
functionId: 701002, |
|
|
|
@ -1293,6 +1366,10 @@ export default { |
|
|
|
clickrow:{}, |
|
|
|
partNo:'', |
|
|
|
addLineLoading:false, |
|
|
|
// 新增工单物料弹窗Site下拉:用于添加物料行/选择物料按工厂过滤 - rqrq |
|
|
|
materialDialogSite: '', |
|
|
|
materialDialogSiteOptions: [], |
|
|
|
materialDialogSiteLoading: false, |
|
|
|
addOrderLoading:false, // 订单添加按钮loading状态 - rqrq(已废弃) |
|
|
|
remark:'', // 已添加订单号列表(分号分隔) - rqrq |
|
|
|
addedOrderNoList: [], // 已添加订单号数组 - rqrq |
|
|
|
@ -1315,11 +1392,12 @@ export default { |
|
|
|
// 订单添加多site确认:shoporder/slittingorder候选 - rqrq |
|
|
|
shopOrderSiteSelectFlag: false, |
|
|
|
shopOrderCandidateList: [], |
|
|
|
// 多site二次查询时锁定当前输入的订单号,避免弹窗期间被清空 - rqrq |
|
|
|
// 多site二次查询时锁定当前输入的订单号与工厂编号 - rqrq |
|
|
|
pendingOrderManageData: { |
|
|
|
orderNo: '', |
|
|
|
releaseNo: '*', |
|
|
|
sequenceNo: '*', |
|
|
|
site: '', |
|
|
|
}, |
|
|
|
} |
|
|
|
}, |
|
|
|
@ -1347,6 +1425,13 @@ export default { |
|
|
|
} |
|
|
|
return typeMap[this.orderType] || '未知类型' |
|
|
|
}, |
|
|
|
// 新增物料弹框置灰展示当前过滤Site - rqrq |
|
|
|
selectMaterialDisplaySite() { |
|
|
|
if (this.isMaterialDetailModal) { |
|
|
|
return String((this.clickrow && this.clickrow.subSite) || this.$store.state.user.site || '').trim() |
|
|
|
} |
|
|
|
return String(this.materialDialogSite || '').trim() |
|
|
|
}, |
|
|
|
// 新增工单物料弹窗表格列配置(根据订单类型动态显示批次号列) - rqrq |
|
|
|
displayColumnList2() { |
|
|
|
// 基础列配置 |
|
|
|
@ -1816,6 +1901,7 @@ export default { |
|
|
|
this.modelName = this.sobomData.partNo || '' |
|
|
|
|
|
|
|
// 将sobomList中的数据转换为选择物料弹框需要的格式,显示在右侧"已有物料"列表中 |
|
|
|
const detailSite = String((this.clickrow && this.clickrow.subSite) || this.$store.state.user.site || '').trim() |
|
|
|
this.selectedMaterialList = this.sobomList.map(item => { |
|
|
|
const convertedItem = JSON.parse(JSON.stringify(item)) |
|
|
|
// 将qtyToIssue转换为applyQty |
|
|
|
@ -1824,6 +1910,9 @@ export default { |
|
|
|
if (!convertedItem.partNo && convertedItem.componentPartNo) { |
|
|
|
convertedItem.partNo = convertedItem.componentPartNo |
|
|
|
} |
|
|
|
// 列表展示补齐Site - rqrq |
|
|
|
convertedItem.site = convertedItem.site || convertedItem.subSite || detailSite |
|
|
|
convertedItem.subSite = convertedItem.subSite || convertedItem.site || detailSite |
|
|
|
return convertedItem |
|
|
|
}) |
|
|
|
|
|
|
|
@ -1863,8 +1952,64 @@ export default { |
|
|
|
this.remark = '' |
|
|
|
// 清空临时订单列表 - rqrq |
|
|
|
this.tempOrderList = [] |
|
|
|
this.partNo = '' |
|
|
|
// 打开弹窗时加载授权Site下拉,供添加物料行/选择物料使用 - rqrq |
|
|
|
this.loadMaterialDialogSiteOptions() |
|
|
|
this.seqNoModalFlag = true |
|
|
|
}, |
|
|
|
|
|
|
|
// 应用授权Site到下拉选项,空授权时回退父site - rqrq |
|
|
|
applyMaterialDialogSiteOptions(subSiteCodeList, parentSite) { |
|
|
|
const normalizedList = Array.isArray(subSiteCodeList) |
|
|
|
? Array.from(new Set(subSiteCodeList.map(code => String(code || '').trim()).filter(code => !!code))) |
|
|
|
: [] |
|
|
|
const finalSiteCodeList = normalizedList.length > 0 |
|
|
|
? normalizedList |
|
|
|
: (parentSite ? [parentSite] : []) |
|
|
|
this.materialDialogSiteOptions = finalSiteCodeList.map(siteCode => ({ |
|
|
|
siteCode, |
|
|
|
siteName: siteCode, |
|
|
|
})) |
|
|
|
if (!this.materialDialogSiteOptions.some(item => item.siteCode === this.materialDialogSite)) { |
|
|
|
this.materialDialogSite = this.materialDialogSiteOptions.length > 0 |
|
|
|
? this.materialDialogSiteOptions[0].siteCode |
|
|
|
: '' |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
// 加载新增工单物料弹窗Site下拉(优先缓存,再拉授权接口) - rqrq |
|
|
|
loadMaterialDialogSiteOptions() { |
|
|
|
const userName = String(localStorage.getItem('userName') || this.$store.state.user.name || '').trim() |
|
|
|
const parentSite = String(localStorage.getItem('site') || this.$store.state.user.site || '').trim() |
|
|
|
const cacheSubSiteCodeList = getAuthorizedSubSiteCodeList(this.$store.state.user.subSiteCodeList) |
|
|
|
this.applyMaterialDialogSiteOptions(cacheSubSiteCodeList, parentSite) |
|
|
|
if (!userName || !parentSite) { |
|
|
|
return Promise.resolve() |
|
|
|
} |
|
|
|
this.materialDialogSiteLoading = true |
|
|
|
return getUserAuthorizedSubSiteCodes({ userName, site: parentSite }) |
|
|
|
.then(({ data }) => { |
|
|
|
if (data && data.code === 0) { |
|
|
|
this.applyMaterialDialogSiteOptions(data.data || [], parentSite) |
|
|
|
} |
|
|
|
}) |
|
|
|
.catch((error) => { |
|
|
|
console.error('获取用户授权Site失败:', error) |
|
|
|
}) |
|
|
|
.finally(() => { |
|
|
|
this.materialDialogSiteLoading = false |
|
|
|
}) |
|
|
|
}, |
|
|
|
|
|
|
|
// 校验并返回当前弹窗选中的Site - rqrq |
|
|
|
resolveMaterialDialogSite() { |
|
|
|
const selectedSite = String(this.materialDialogSite || '').trim() |
|
|
|
if (!selectedSite) { |
|
|
|
this.$message.warning('请先选择Site!') |
|
|
|
return '' |
|
|
|
} |
|
|
|
return selectedSite |
|
|
|
}, |
|
|
|
searchSOSRouting() { |
|
|
|
// 初始化seqNoList如果不存在 |
|
|
|
if (!this.seqNoList) { |
|
|
|
@ -1924,8 +2069,11 @@ export default { |
|
|
|
|
|
|
|
// ==================== 订单管理弹窗相关方法 - rqrq ==================== |
|
|
|
|
|
|
|
// 打开订单管理弹窗 - rqrq |
|
|
|
// 打开订单管理弹窗:必须先选中工厂编号,查询按精确site不带% - rqrq |
|
|
|
openOrderManageDialog() { |
|
|
|
if (!this.resolveMaterialDialogSite()) { |
|
|
|
return |
|
|
|
} |
|
|
|
this.orderManageDialogVisible = true |
|
|
|
// 不清空临时列表,保留上次输入的数据 - rqrq |
|
|
|
// this.tempOrderList = [] |
|
|
|
@ -1942,37 +2090,42 @@ export default { |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
// 添加订单到临时列表(不汇总);多site时先弹窗确认再查物料 - rqrq |
|
|
|
// 添加订单到临时列表(不汇总);按弹窗工厂编号精确查,不再用site% - rqrq |
|
|
|
addOrderToTempList() { |
|
|
|
// 1. 参数校验 - rqrq |
|
|
|
if (!this.orderManageData.orderNo || this.orderManageData.orderNo.trim() === '') { |
|
|
|
this.$message.warning('请输入Order No!') |
|
|
|
return |
|
|
|
} |
|
|
|
const selectedSite = this.resolveMaterialDialogSite() |
|
|
|
if (!selectedSite) { |
|
|
|
return |
|
|
|
} |
|
|
|
if (this.addOrderTempLoading) { |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
// 锁定当前输入,供多site二次查询使用 - rqrq |
|
|
|
// 锁定当前输入,供二次查询使用 - rqrq |
|
|
|
this.pendingOrderManageData = { |
|
|
|
orderNo: this.orderManageData.orderNo.trim(), |
|
|
|
releaseNo: this.orderManageData.releaseNo || '*', |
|
|
|
sequenceNo: this.orderManageData.sequenceNo || '*', |
|
|
|
site: selectedSite, |
|
|
|
} |
|
|
|
|
|
|
|
if (this.orderType === 'shipment') { |
|
|
|
this.addShipmentOrderToTempList() |
|
|
|
return |
|
|
|
} |
|
|
|
// 分切/成品订单:先按site%查工单头,唯一则直接查物料,多site弹窗确认 - rqrq |
|
|
|
// 分切/成品订单:按下拉工厂编号精确查工单 - rqrq |
|
|
|
this.addShopOrderToTempList() |
|
|
|
}, |
|
|
|
|
|
|
|
// 销售发货:site%模糊查头;多CONTRACT返回needSelectSite后弹窗确认 - rqrq |
|
|
|
// 销售发货:按弹窗工厂编号精确查询,不再拼接% - rqrq |
|
|
|
addShipmentOrderToTempList() { |
|
|
|
this.addOrderTempLoading = true |
|
|
|
const requestParams = { |
|
|
|
site: (this.$store.state.user.site || '') + '%', |
|
|
|
site: this.pendingOrderManageData.site || this.materialDialogSite, |
|
|
|
orderNo: this.pendingOrderManageData.orderNo, |
|
|
|
} |
|
|
|
getShipmentAndLineForIssure(requestParams) |
|
|
|
@ -1991,7 +2144,10 @@ export default { |
|
|
|
this.shipmentSiteSelectModalFlag = true |
|
|
|
return |
|
|
|
} |
|
|
|
this.appendOrderMaterialToTempList(data.rows || []) |
|
|
|
this.appendOrderMaterialToTempList( |
|
|
|
data.rows || [], |
|
|
|
this.pendingOrderManageData.site || this.materialDialogSite |
|
|
|
) |
|
|
|
}) |
|
|
|
.catch((error) => { |
|
|
|
this.$message.error((error && error.msg) || '获取订单物料失败,请稍后重试') |
|
|
|
@ -2033,7 +2189,7 @@ export default { |
|
|
|
} |
|
|
|
this.addOrderTempLoading = true |
|
|
|
const requestParams = { |
|
|
|
site: this.$store.state.user.site, |
|
|
|
site: this.pendingOrderManageData.site || this.materialDialogSite, |
|
|
|
orderNo: this.pendingOrderManageData.orderNo, |
|
|
|
selectedSite: this.shipmentSiteSelectedRow.contract, |
|
|
|
} |
|
|
|
@ -2041,7 +2197,10 @@ export default { |
|
|
|
.then(({ data }) => { |
|
|
|
if (data && data.code === 0) { |
|
|
|
this.shipmentSiteSelectModalFlag = false |
|
|
|
this.appendOrderMaterialToTempList(data.rows || [], this.shipmentSiteSelectedRow.contract) |
|
|
|
this.appendOrderMaterialToTempList( |
|
|
|
data.rows || [], |
|
|
|
this.shipmentSiteSelectedRow.contract || this.pendingOrderManageData.site || this.materialDialogSite |
|
|
|
) |
|
|
|
return |
|
|
|
} |
|
|
|
this.$message.error((data && data.msg) || '获取订单物料失败!') |
|
|
|
@ -2054,12 +2213,12 @@ export default { |
|
|
|
}) |
|
|
|
}, |
|
|
|
|
|
|
|
// 成品/分切:先按site%查ShopOrder;唯一则查物料,多site弹窗选择 - rqrq |
|
|
|
// 成品/分切:按下拉工厂编号精确查ShopOrder,不再拼接% - rqrq |
|
|
|
addShopOrderToTempList() { |
|
|
|
this.addOrderTempLoading = true |
|
|
|
let materialFetchStarted = false |
|
|
|
const shopOrderQuery = { |
|
|
|
site: (this.$store.state.user.site || '') + '%', |
|
|
|
site: this.pendingOrderManageData.site || this.materialDialogSite, |
|
|
|
orderNo: this.pendingOrderManageData.orderNo, |
|
|
|
releaseNo: this.pendingOrderManageData.releaseNo, |
|
|
|
sequenceNo: this.pendingOrderManageData.sequenceNo, |
|
|
|
@ -2102,12 +2261,13 @@ export default { |
|
|
|
this.fetchShopOrderMaterialToTempList(row) |
|
|
|
}, |
|
|
|
|
|
|
|
// 使用精确site(contract)调用ShopOrderMaterial链路 - rqrq |
|
|
|
// 使用精确site调用ShopOrderMaterial链路,优先弹窗工厂编号 - rqrq |
|
|
|
fetchShopOrderMaterialToTempList(shopOrder) { |
|
|
|
const contract = (shopOrder && (shopOrder.contract || shopOrder.site)) || '' |
|
|
|
const selectedSite = this.pendingOrderManageData.site || this.materialDialogSite |
|
|
|
const contract = selectedSite || (shopOrder && (shopOrder.contract || shopOrder.site)) || '' |
|
|
|
if (!contract) { |
|
|
|
this.addOrderTempLoading = false |
|
|
|
this.$message.error('工单缺少Site(contract)信息,无法查询物料') |
|
|
|
this.$message.error('缺少工厂编号,无法查询物料') |
|
|
|
return Promise.resolve() |
|
|
|
} |
|
|
|
this.addOrderTempLoading = true |
|
|
|
@ -2133,7 +2293,7 @@ export default { |
|
|
|
}) |
|
|
|
}, |
|
|
|
|
|
|
|
// 字段映射后追加到临时列表,并回填subSite - rqrq |
|
|
|
// 字段映射后追加到临时列表,并回填subSite为弹窗工厂编号 - rqrq |
|
|
|
appendOrderMaterialToTempList(materialList, selectedSite, shopOrder) { |
|
|
|
if (!materialList || materialList.length === 0) { |
|
|
|
this.$message.warning('该订单没有物料明细!') |
|
|
|
@ -2142,7 +2302,7 @@ export default { |
|
|
|
const orderNo = (shopOrder && shopOrder.orderNo) || this.pendingOrderManageData.orderNo |
|
|
|
const releaseNo = (shopOrder && shopOrder.releaseNo) || this.pendingOrderManageData.releaseNo || '' |
|
|
|
const sequenceNo = (shopOrder && shopOrder.sequenceNo) || this.pendingOrderManageData.sequenceNo || '' |
|
|
|
const subSite = selectedSite || '' |
|
|
|
const subSite = selectedSite || this.pendingOrderManageData.site || this.materialDialogSite || '' |
|
|
|
|
|
|
|
materialList.forEach((item) => { |
|
|
|
if (this.orderType === 'shipment') { |
|
|
|
@ -2442,15 +2602,19 @@ export default { |
|
|
|
this.$message.warning('请输入物料号!') |
|
|
|
return |
|
|
|
} |
|
|
|
const selectedSite = this.resolveMaterialDialogSite() |
|
|
|
if (!selectedSite) { |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
// 初始化seqNoList如果不存在 |
|
|
|
if (!this.seqNoList) { |
|
|
|
this.seqNoList = [] |
|
|
|
} |
|
|
|
|
|
|
|
// 准备查询参数 |
|
|
|
// 准备查询参数:site取弹窗下拉选中值 - rqrq |
|
|
|
const queryParams = { |
|
|
|
site: this.$store.state.user.site, |
|
|
|
site: selectedSite, |
|
|
|
componentPartNo: this.partNo || '', // 使用物料号输入框的值 |
|
|
|
orderType: this.orderType, // 使用订单类型 |
|
|
|
} |
|
|
|
@ -2466,7 +2630,7 @@ export default { |
|
|
|
this.$message.warning('查询到的物料已存在于列表中!') |
|
|
|
return |
|
|
|
} |
|
|
|
// 确保数据结构完整 |
|
|
|
// 确保数据结构完整;subSite回填弹窗选中Site - rqrq |
|
|
|
const newRow = { |
|
|
|
partNo: data.rows.partNo || '', |
|
|
|
height: data.rows.height || '', |
|
|
|
@ -2483,6 +2647,7 @@ export default { |
|
|
|
startDate: '', |
|
|
|
finishDate: '', |
|
|
|
needDate: '', |
|
|
|
subSite: selectedSite, |
|
|
|
} |
|
|
|
this.seqNoList.push(newRow) |
|
|
|
console.log('添加的新行:', newRow) // 调试用; |
|
|
|
@ -2556,19 +2721,27 @@ export default { |
|
|
|
}, |
|
|
|
// 打开选择物料弹框 |
|
|
|
openSelectMaterialModal() { |
|
|
|
const selectedSite = this.resolveMaterialDialogSite() |
|
|
|
if (!selectedSite) { |
|
|
|
return |
|
|
|
} |
|
|
|
this.isMaterialDetailModal = false // 标识从新增工单物料弹框打开 |
|
|
|
|
|
|
|
// 设置模板编号和名称 |
|
|
|
this.modelCode = this.seqNoData.orderNo |
|
|
|
this.modelName = this.seqNoData.releaseNo |
|
|
|
|
|
|
|
// 初始化已选列表为当前seqNoList中的数据 |
|
|
|
this.selectedMaterialList = JSON.parse(JSON.stringify(this.seqNoList)) |
|
|
|
// 初始化已选列表为当前seqNoList中的数据,并补齐Site展示字段 - rqrq |
|
|
|
this.selectedMaterialList = JSON.parse(JSON.stringify(this.seqNoList)).map((item) => { |
|
|
|
item.site = item.site || item.subSite || selectedSite |
|
|
|
item.subSite = item.subSite || item.site || selectedSite |
|
|
|
return item |
|
|
|
}) |
|
|
|
|
|
|
|
// 重置分页 |
|
|
|
this.availableMaterialPage = 1 |
|
|
|
|
|
|
|
// 加载可选物料列表 |
|
|
|
// 加载可选物料列表(按弹窗Site过滤) - rqrq |
|
|
|
this.loadAvailableMaterialList() |
|
|
|
|
|
|
|
// 打开弹框 |
|
|
|
@ -2576,11 +2749,22 @@ export default { |
|
|
|
}, |
|
|
|
// 加载可选物料列表 |
|
|
|
loadAvailableMaterialList() { |
|
|
|
// 新增物料弹窗取下拉Site;申请明细弹窗取当前行subSite,缺省回退登录site - rqrq |
|
|
|
const selectedSite = this.isMaterialDetailModal |
|
|
|
? String((this.clickrow && this.clickrow.subSite) || this.$store.state.user.site || '').trim() |
|
|
|
: String(this.materialDialogSite || '').trim() |
|
|
|
if (!selectedSite) { |
|
|
|
this.$message.warning('请先选择Site!') |
|
|
|
this.availableMaterialList = [] |
|
|
|
this.availableMaterialTotal = 0 |
|
|
|
return |
|
|
|
} |
|
|
|
this.selectMaterialLoading = true |
|
|
|
const params = { |
|
|
|
page: this.availableMaterialPage, |
|
|
|
limit: this.availableMaterialLimit, |
|
|
|
componentPartNo: this.componentPartNo, |
|
|
|
site: selectedSite, |
|
|
|
} |
|
|
|
noOrderList(params) |
|
|
|
.then(({ data }) => { |
|
|
|
@ -2600,9 +2784,15 @@ export default { |
|
|
|
selectedPartNos.push(...sobomPartNos) |
|
|
|
} |
|
|
|
|
|
|
|
this.availableMaterialList = data.page.list.filter( |
|
|
|
(item) => !selectedPartNos.includes(item.partNo) |
|
|
|
) |
|
|
|
this.availableMaterialList = data.page.list |
|
|
|
.filter((item) => !selectedPartNos.includes(item.partNo)) |
|
|
|
.map((item) => { |
|
|
|
// 列表展示与后续落库:补齐site/subSite - rqrq |
|
|
|
const row = Object.assign({}, item) |
|
|
|
row.site = row.site || selectedSite |
|
|
|
row.subSite = row.subSite || row.site || selectedSite |
|
|
|
return row |
|
|
|
}) |
|
|
|
} else { |
|
|
|
this.availableMaterialList = [] |
|
|
|
} |
|
|
|
@ -2670,6 +2860,9 @@ export default { |
|
|
|
) |
|
|
|
if (!exists) { |
|
|
|
const newItem = JSON.parse(JSON.stringify(item)) |
|
|
|
const selectedSite = this.selectMaterialDisplaySite |
|
|
|
newItem.site = newItem.site || selectedSite |
|
|
|
newItem.subSite = newItem.subSite || newItem.site || selectedSite |
|
|
|
this.selectedMaterialList.push(newItem) |
|
|
|
} |
|
|
|
}) |
|
|
|
@ -2727,6 +2920,7 @@ export default { |
|
|
|
item.soorderNo = this.clickrow.soorderNo |
|
|
|
item.orderType = this.clickrow.orderType |
|
|
|
item.site = this.$store.state.user.site |
|
|
|
item.subSite = item.subSite || (this.clickrow && this.clickrow.subSite) || '' |
|
|
|
// 确保componentPartNo存在 |
|
|
|
if (!item.componentPartNo) { |
|
|
|
item.componentPartNo = item.partNo |
|
|
|
@ -2738,8 +2932,16 @@ export default { |
|
|
|
|
|
|
|
this.isMaterialDetailModal = false |
|
|
|
} else { |
|
|
|
// 从新增工单物料弹框打开的情况,将数据添加到seqNoList |
|
|
|
this.seqNoList = JSON.parse(JSON.stringify(this.selectedMaterialList)) |
|
|
|
// 从新增工单物料弹框打开的情况,将数据添加到seqNoList,并回填弹窗Site - rqrq |
|
|
|
const selectedSite = String(this.materialDialogSite || '').trim() |
|
|
|
const selectedItems = JSON.parse(JSON.stringify(this.selectedMaterialList)) |
|
|
|
selectedItems.forEach(item => { |
|
|
|
item.subSite = item.subSite || selectedSite |
|
|
|
if (!item.componentPartNo) { |
|
|
|
item.componentPartNo = item.partNo |
|
|
|
} |
|
|
|
}) |
|
|
|
this.seqNoList = selectedItems |
|
|
|
} |
|
|
|
|
|
|
|
// 关闭弹框 |
|
|
|
@ -3449,9 +3651,10 @@ export default { |
|
|
|
return false |
|
|
|
} |
|
|
|
this.seqNoList[i].notifyNo = this.notifyNo |
|
|
|
this.seqNoList[i].site = this.$store.state.user.site |
|
|
|
this.seqNoList[i].componentPartNo = this.seqNoList[i].componentPartNo || this.seqNoList[i].partNo |
|
|
|
this.seqNoList[i].subSite = this.seqNoList[i].subSite || this.seqNoList[i].contract || this.seqNoList[i].site || this.$store.state.user.site |
|
|
|
// 先落subSite再写大site,避免被父site覆盖 - rqrq |
|
|
|
this.seqNoList[i].subSite = this.seqNoList[i].subSite || this.seqNoList[i].contract || this.materialDialogSite || this.$store.state.user.site |
|
|
|
this.seqNoList[i].site = this.$store.state.user.site |
|
|
|
} |
|
|
|
|
|
|
|
const materialList = this.seqNoList.filter((item) => item.applyQty > 0) |
|
|
|
|