|
|
|
@ -167,6 +167,27 @@ |
|
|
|
<el-button type="primary" @click="seqNoModalFlag = false">关闭</el-button> |
|
|
|
</el-footer> |
|
|
|
</el-dialog> |
|
|
|
<!-- 同一订单号对应多个site时,先选具体contract再查物料 - rqrq --> |
|
|
|
<el-dialog title="选择工单Site" :close-on-click-modal="false" v-drag :visible.sync="shopOrderSiteSelectFlag" width="900px" append-to-body> |
|
|
|
<el-table :height="360" :data="shopOrderCandidateList" border style="width: 100%;" highlight-current-row> |
|
|
|
<el-table-column prop="contract" label="Site" min-width="100" header-align="center" align="center" show-overflow-tooltip></el-table-column> |
|
|
|
<el-table-column prop="orderNo" label="OrderNo" min-width="120" header-align="center" align="center" show-overflow-tooltip></el-table-column> |
|
|
|
<el-table-column prop="releaseNo" label="ReleaseNo" min-width="90" header-align="center" align="center"></el-table-column> |
|
|
|
<el-table-column prop="sequenceNo" label="SequenceNo" min-width="90" header-align="center" align="center"></el-table-column> |
|
|
|
<el-table-column prop="partNo" label="产品编码" min-width="120" header-align="center" align="center" show-overflow-tooltip></el-table-column> |
|
|
|
<el-table-column prop="partDesc" label="产品名称" min-width="160" header-align="center" align="left" show-overflow-tooltip></el-table-column> |
|
|
|
<el-table-column prop="objstate" label="状态" min-width="90" header-align="center" align="center"></el-table-column> |
|
|
|
<el-table-column prop="lotSize" label="工单数量" min-width="90" header-align="center" align="right"></el-table-column> |
|
|
|
<el-table-column fixed="right" header-align="center" align="center" width="90" label="操作"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<el-button type="primary" size="mini" plain :loading="seqNoModalLoading" @click="confirmShopOrderSite(scope.row)">选择</el-button> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
</el-table> |
|
|
|
<el-footer style="height:40px;margin-top: 10px;text-align:center"> |
|
|
|
<el-button type="primary" @click="shopOrderSiteSelectFlag = false">关闭</el-button> |
|
|
|
</el-footer> |
|
|
|
</el-dialog> |
|
|
|
<el-dialog title="保存工单" :close-on-click-modal="false" v-drag :visible.sync="saveSeqNoModalFlag" width="750px"> |
|
|
|
<el-form :inline="true" label-position="top" style="margin-left: 7px;margin-top: -5px;"> |
|
|
|
<el-row :gutter="20"> |
|
|
|
@ -734,7 +755,7 @@ export default { |
|
|
|
fixed: false, |
|
|
|
columnWidth: 100, |
|
|
|
}, |
|
|
|
/* { |
|
|
|
{ |
|
|
|
userId: this.$store.state.user.name, |
|
|
|
functionId: 555001, |
|
|
|
serialNumber: '555001Table2ReleaseNo', |
|
|
|
@ -769,7 +790,7 @@ export default { |
|
|
|
status: true, |
|
|
|
fixed: false, |
|
|
|
columnWidth: 80, |
|
|
|
}, */ |
|
|
|
}, |
|
|
|
{ |
|
|
|
userId: this.$store.state.user.name, |
|
|
|
functionId: 555001, |
|
|
|
@ -788,16 +809,16 @@ export default { |
|
|
|
fixed: false, |
|
|
|
columnWidth: 70, |
|
|
|
}, |
|
|
|
/* { |
|
|
|
{ |
|
|
|
userId: this.$store.state.user.name, |
|
|
|
functionId: 555001, |
|
|
|
serialNumber: '555001Table2Contract', |
|
|
|
serialNumber: '555001Table2SubSite', |
|
|
|
tableId: '555001Table2', |
|
|
|
tableName: '查询工单及物料', |
|
|
|
columnProp: 'contract', |
|
|
|
columnProp: 'subSite', |
|
|
|
headerAlign: 'center', |
|
|
|
align: 'center', |
|
|
|
columnLabel: '合同', |
|
|
|
columnLabel: 'Site', |
|
|
|
columnHidden: false, |
|
|
|
columnImage: false, |
|
|
|
columnSortable: false, |
|
|
|
@ -805,7 +826,7 @@ export default { |
|
|
|
status: true, |
|
|
|
fixed: false, |
|
|
|
columnWidth: 100, |
|
|
|
}, */ |
|
|
|
}, |
|
|
|
{ |
|
|
|
userId: this.$store.state.user.name, |
|
|
|
functionId: 555001, |
|
|
|
@ -1433,6 +1454,9 @@ export default { |
|
|
|
chooseLoading: false, |
|
|
|
seqNoModalLoading: false, |
|
|
|
saveNewLoading: false, |
|
|
|
// 多site工单候选列表(contract区分)- rqrq |
|
|
|
shopOrderSiteSelectFlag: false, |
|
|
|
shopOrderCandidateList: [], |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
@ -1771,7 +1795,7 @@ export default { |
|
|
|
|
|
|
|
chooseSOSModal() { |
|
|
|
this.seqNoData = { |
|
|
|
site: this.$store.state.user.site, |
|
|
|
site: this.$store.state.user.site+'%', |
|
|
|
orderNo: '', |
|
|
|
releaseNo: '*', |
|
|
|
sequenceNo: '*', |
|
|
|
@ -1784,9 +1808,11 @@ export default { |
|
|
|
endDate: this.dayjs().format('YYYY-MM-DD'), |
|
|
|
} |
|
|
|
this.seqNoList = [] |
|
|
|
this.shopOrderCandidateList = [] |
|
|
|
this.shopOrderSiteSelectFlag = false |
|
|
|
this.seqNoModalFlag = true |
|
|
|
}, |
|
|
|
// 海安工单物料拉取:IFS回传contract映射为subSite并透传到后续保存 - rqrq |
|
|
|
// 先按site%查ShopOrder;唯一则用contract查物料,多site则弹窗选择 - rqrq |
|
|
|
searchSOSRouting() { |
|
|
|
if (!this.seqNoData.orderNo || !this.seqNoData.releaseNo || !this.seqNoData.sequenceNo) { |
|
|
|
this.$message.warning('请输入完整的OrderNo/ReleaseNo/SequenceNo!') |
|
|
|
@ -1796,7 +1822,66 @@ export default { |
|
|
|
return false |
|
|
|
} |
|
|
|
this.seqNoModalLoading = true |
|
|
|
haiAnGetShopOrderAndMaterialByShoporder(this.seqNoData) |
|
|
|
let materialFetchStarted = false |
|
|
|
const shopOrderQuery = { |
|
|
|
...this.seqNoData, |
|
|
|
site: (this.$store.state.user.site || '') + '%', |
|
|
|
} |
|
|
|
haiAnGetShopOrderFromIFSWithOrderNo(shopOrderQuery) |
|
|
|
.then(({ data }) => { |
|
|
|
if (!(data && data.code === 0 && data.rows && data.rows.length > 0)) { |
|
|
|
this.$message.error((data && data.msg) || '未查询到工单') |
|
|
|
return |
|
|
|
} |
|
|
|
const allowedStatuses = ['Released', 'Reserved', 'Started'] |
|
|
|
const validOrders = data.rows.filter(item => allowedStatuses.includes(item.objstate)) |
|
|
|
if (data.rows.length > 0 && validOrders.length === 0) { |
|
|
|
this.$message.error('生产订单' + this.seqNoData.orderNo + '状态不允许发料,请检查!') |
|
|
|
return |
|
|
|
} |
|
|
|
if (validOrders.length === 1) { |
|
|
|
// 唯一工单:loading交由物料查询方法接管 - rqrq |
|
|
|
materialFetchStarted = true |
|
|
|
return this.fetchShopOrderMaterial(validOrders[0]) |
|
|
|
} |
|
|
|
// 多site:展示contract供用户选择后再查物料 - rqrq |
|
|
|
this.shopOrderCandidateList = validOrders |
|
|
|
this.shopOrderSiteSelectFlag = true |
|
|
|
}) |
|
|
|
.catch((e) => { |
|
|
|
this.$message.error((e && e.msg) || '查询工单失败') |
|
|
|
}) |
|
|
|
.finally(() => { |
|
|
|
if (!materialFetchStarted) { |
|
|
|
this.seqNoModalLoading = false |
|
|
|
} |
|
|
|
}) |
|
|
|
}, |
|
|
|
// 用户选定具体site(contract)后拉取物料 - rqrq |
|
|
|
confirmShopOrderSite(row) { |
|
|
|
if (!row) { |
|
|
|
return |
|
|
|
} |
|
|
|
this.shopOrderSiteSelectFlag = false |
|
|
|
this.fetchShopOrderMaterial(row) |
|
|
|
}, |
|
|
|
// 使用精确site(contract)调用ShopOrderMaterial链路,并映射subSite - rqrq |
|
|
|
fetchShopOrderMaterial(shopOrder) { |
|
|
|
const contract = (shopOrder && (shopOrder.contract || shopOrder.site)) || '' |
|
|
|
if (!contract) { |
|
|
|
this.seqNoModalLoading = false |
|
|
|
this.$message.error('工单缺少Site(contract)信息,无法查询物料') |
|
|
|
return Promise.resolve() |
|
|
|
} |
|
|
|
this.seqNoModalLoading = true |
|
|
|
const materialQuery = { |
|
|
|
...this.seqNoData, |
|
|
|
site: contract, |
|
|
|
orderNo: (shopOrder && shopOrder.orderNo) || this.seqNoData.orderNo, |
|
|
|
releaseNo: (shopOrder && shopOrder.releaseNo) || this.seqNoData.releaseNo, |
|
|
|
sequenceNo: (shopOrder && shopOrder.sequenceNo) || this.seqNoData.sequenceNo, |
|
|
|
} |
|
|
|
return haiAnGetShopOrderAndMaterialByShoporder(materialQuery) |
|
|
|
.then(({ data }) => { |
|
|
|
if (data && data.code === 0 && data.rows && data.rows.length > 0) { |
|
|
|
data.rows.forEach(newRow => { |
|
|
|
@ -1805,8 +1890,8 @@ export default { |
|
|
|
const qtyReserved = parseFloat(newRow.qtyReserved) || 0 |
|
|
|
const applyQty = qtyRequired - qtyIssued - qtyReserved |
|
|
|
this.$set(newRow, 'applyQty', applyQty > 0 ? applyQty : 0) |
|
|
|
// 明确subSite来源:IFS回传contract/site均视为subsite - rqrq |
|
|
|
this.$set(newRow, 'subSite', newRow.subSite || newRow.contract || newRow.site || '') |
|
|
|
// 明确subSite来源:优先接口回传,其次选定工单的contract - rqrq |
|
|
|
this.$set(newRow, 'subSite', newRow.subSite || newRow.contract || contract || newRow.site || '') |
|
|
|
this.seqNoList.push(newRow) |
|
|
|
}) |
|
|
|
this.$message.success(`成功添加 ${data.rows.length} 条数据`) |
|
|
|
@ -1815,7 +1900,7 @@ export default { |
|
|
|
} |
|
|
|
}) |
|
|
|
.catch((e) => { |
|
|
|
this.$message.error(e.msg || '查询失败') |
|
|
|
this.$message.error((e && e.msg) || '查询失败') |
|
|
|
}) |
|
|
|
.finally(() => { |
|
|
|
this.seqNoModalLoading = false |
|
|
|
|