|
|
|
@ -84,6 +84,57 @@ |
|
|
|
:value="opt.value"> |
|
|
|
</el-option> |
|
|
|
</el-select> |
|
|
|
</template> |
|
|
|
<template v-else-if="editMode && item.editAble && item.columnProp==='departure'"> |
|
|
|
<el-select |
|
|
|
v-model="rowDeparture[scope.row.id]" |
|
|
|
size="mini" |
|
|
|
style="width: 100%" |
|
|
|
clearable |
|
|
|
filterable |
|
|
|
placeholder="请选择始发港" |
|
|
|
@change="(val) => handlePortChange(scope.row, val)"> |
|
|
|
<el-option |
|
|
|
v-for="opt in poDepartureOptions" |
|
|
|
:key="String(opt.value)" |
|
|
|
:label="opt.label" |
|
|
|
:value="opt.value"> |
|
|
|
</el-option> |
|
|
|
</el-select> |
|
|
|
</template> |
|
|
|
<template v-else-if="editMode && item.editAble && item.columnProp==='destination'"> |
|
|
|
<el-select |
|
|
|
v-model="rowDestination[scope.row.id]" |
|
|
|
size="mini" |
|
|
|
style="width: 100%" |
|
|
|
clearable |
|
|
|
filterable |
|
|
|
placeholder="请选择目的港" |
|
|
|
@change="(val) => handlePortChange(scope.row, val)"> |
|
|
|
<el-option |
|
|
|
v-for="opt in poDestinationOptions" |
|
|
|
:key="String(opt.value)" |
|
|
|
:label="opt.label" |
|
|
|
:value="opt.value"> |
|
|
|
</el-option> |
|
|
|
</el-select> |
|
|
|
</template> |
|
|
|
<template v-else-if="editMode && item.editAble && item.columnProp==='shipVia'"> |
|
|
|
<el-select |
|
|
|
v-model="rowShipVia[scope.row.id]" |
|
|
|
size="mini" |
|
|
|
style="width: 100%" |
|
|
|
clearable |
|
|
|
filterable |
|
|
|
placeholder="请选择运输方式" |
|
|
|
@change="(val) => handlePortChange(scope.row, val)"> |
|
|
|
<el-option |
|
|
|
v-for="opt in transportOptions" |
|
|
|
:key="String(opt.value)" |
|
|
|
:label="opt.label" |
|
|
|
:value="opt.value"> |
|
|
|
</el-option> |
|
|
|
</el-select> |
|
|
|
</template> |
|
|
|
<template v-else-if="editMode && item.editAble"> |
|
|
|
<!-- 下拉框 --> |
|
|
|
@ -160,20 +211,28 @@ |
|
|
|
import { searchPoDetailPage, batchUpdatePoDetail } from '@/api/order/poOrder.js' |
|
|
|
import { getPartList } from '@/api/part/partInfo.js' |
|
|
|
import { checkSrmSupplierList } from '@/api/srm/srmSupplier.js' |
|
|
|
import { searchTransportOptions } from '@/api/port/portTransit.js' |
|
|
|
|
|
|
|
export default { |
|
|
|
name: 'PoOrder', |
|
|
|
data () { |
|
|
|
return { |
|
|
|
loading: false, |
|
|
|
masterRows: [], |
|
|
|
/** |
|
|
|
* 需要单独写编辑 UI 的 columnProp 填在这里,才会走模板里「自定义」分支;不在此数组的仍用默认 select/num/text - rqrq |
|
|
|
* 示例:['mPlanner', 'comments'] |
|
|
|
*/ |
|
|
|
rowDeparture: {}, // 存储每行选中的始发港 |
|
|
|
rowDestination: {}, // 存储每行选中的目的港 |
|
|
|
rowShipVia: {}, // 存储每行选中的运输方式 |
|
|
|
transportOptions: [], // 运输方式选项 |
|
|
|
rowPartNo: {}, //存储每行选中的物料编号 |
|
|
|
rowSupplierNo: {}, //存储每行选中的供应商编号 |
|
|
|
poPartNoOptions: [], |
|
|
|
supplierOptions: [], |
|
|
|
poDepartureOptions: [], |
|
|
|
poDestinationOptions: [], |
|
|
|
customEditColumnProps: [], |
|
|
|
|
|
|
|
currentRow: null, |
|
|
|
@ -184,6 +243,7 @@ export default { |
|
|
|
{ label: '已取消', value: '已取消' } |
|
|
|
], |
|
|
|
poPartNoOptions: [], |
|
|
|
poDepartureOptions: [], |
|
|
|
transportOptions: [ |
|
|
|
{ label: '海运 SEA', value: 'SEA' }, |
|
|
|
{ label: '空运 AIR', value: 'AIR' }, |
|
|
|
@ -573,8 +633,8 @@ export default { |
|
|
|
columnWidth: 100, |
|
|
|
showOverflowTooltip: true, |
|
|
|
editAble: true, |
|
|
|
editType: 'text', |
|
|
|
selectOptionsKey: '', |
|
|
|
editType: 'select', |
|
|
|
selectOptionsKey: 'departureOptions', |
|
|
|
selectOptions: null |
|
|
|
}, |
|
|
|
{ |
|
|
|
@ -596,8 +656,8 @@ export default { |
|
|
|
columnWidth: 110, |
|
|
|
showOverflowTooltip: true, |
|
|
|
editAble: true, |
|
|
|
editType: 'text', |
|
|
|
selectOptionsKey: '', |
|
|
|
editType: 'select', |
|
|
|
selectOptionsKey: 'destinationOptions', |
|
|
|
selectOptions: null |
|
|
|
}, |
|
|
|
{ |
|
|
|
@ -813,7 +873,7 @@ export default { |
|
|
|
serialNumber: '812003Table1ACrd', |
|
|
|
tableId: '812003Table1', |
|
|
|
tableName: 'PO Order', |
|
|
|
columnProp: 'crd', |
|
|
|
columnProp: 'realCrd', |
|
|
|
headerAlign: 'center', |
|
|
|
align: 'center', |
|
|
|
columnLabel: 'A_CRD', |
|
|
|
@ -1188,7 +1248,7 @@ export default { |
|
|
|
...row, |
|
|
|
changeFlag: 0 // 初始化变更标记 |
|
|
|
})) |
|
|
|
this.initRowEditValues() |
|
|
|
|
|
|
|
this.pageIndex = data.page.currPage |
|
|
|
this.pageSize = data.page.pageSize |
|
|
|
this.totalPage = data.page.totalCount |
|
|
|
@ -1225,13 +1285,6 @@ export default { |
|
|
|
this.$set(row, 'shortOffice', selectedOption.shortOffice || '') |
|
|
|
this.$set(row, 'shortNpc', selectedOption.shortNpc || '') |
|
|
|
this.$set(row, 'changeFlag', 1) |
|
|
|
} else if (!supplierNo) { |
|
|
|
this.$set(row, 'supplierName', '') |
|
|
|
this.$set(row, 'supplierNo', '') |
|
|
|
this.$set(row, 'shortOffice', '') |
|
|
|
this.$set(row, 'shortNpc', '') |
|
|
|
this.$set(row, 'changeFlag', 1) |
|
|
|
this.$set(this.rowSupplierNo, row.id, '') |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
@ -1248,23 +1301,48 @@ export default { |
|
|
|
this.$set(row, 'category', selectedOption.category || '') |
|
|
|
this.$set(row, 'sku', selectedOption.sku || '') |
|
|
|
this.$set(row, 'changeFlag', 1) |
|
|
|
} else if (!partNo) { |
|
|
|
// 清空选择 |
|
|
|
this.$set(row, 'partNo', '') |
|
|
|
this.$set(row, 'category', '') |
|
|
|
this.$set(row, 'sku', '') |
|
|
|
this.$set(row, 'changeFlag', 1) |
|
|
|
// 清除存储的物料编号 |
|
|
|
this.$set(this.rowPartNo, row.id, '') |
|
|
|
} |
|
|
|
}, |
|
|
|
handlePortChange(row, field, value) { |
|
|
|
console.log(`${field}变更:`, value, '行ID:', row.id) |
|
|
|
this.$set(row, field, value) // 直接设置字段值 |
|
|
|
this.$set(row, 'changeFlag', 1) |
|
|
|
|
|
|
|
// 注意:这里还需要同步更新对应的 rowDeparture/rowDestination/rowShipVia |
|
|
|
if (field === 'departure') { |
|
|
|
this.$set(this.rowDeparture, row.id, value) |
|
|
|
} else if (field === 'destination') { |
|
|
|
this.$set(this.rowDestination, row.id, value) |
|
|
|
} else if (field === 'shipVia') { |
|
|
|
this.$set(this.rowShipVia, row.id, value) |
|
|
|
} |
|
|
|
|
|
|
|
// 如果三个字段都填写了,获取运输方式选项 |
|
|
|
if (row.departure && row.destination && row.shipVia) { |
|
|
|
this.getTransportOptions(row.departure, row.destination, row.shipVia) |
|
|
|
} |
|
|
|
}, |
|
|
|
getTransportOptions(departure, destination, shipVia) { |
|
|
|
console.log('获取运输方式选项:', departure, destination, shipVia) |
|
|
|
//调用接口获取运输方式选项 |
|
|
|
searchTransportOptions({ departure, destination, shipVia }).then(({ data }) => { |
|
|
|
if (data && data.code === 0) { |
|
|
|
this.transportOptions = (data.rows || []).map(item => ({ |
|
|
|
label: item.shipVia, |
|
|
|
value: item.shipVia, |
|
|
|
eta: item.eta |
|
|
|
})) |
|
|
|
} else { |
|
|
|
this.$message.error(data.msg || '获取运输方式选项失败') |
|
|
|
} |
|
|
|
}).catch(error => { |
|
|
|
this.$message.error('获取运输方式选项失败: ' + error.message) |
|
|
|
}) |
|
|
|
}, |
|
|
|
|
|
|
|
toggleEditMode () { |
|
|
|
if (!this.editMode) { |
|
|
|
this.editMode = true |
|
|
|
this.initRowEditValues() |
|
|
|
this.getSupplierOptions() |
|
|
|
this.getPartNoOptions() |
|
|
|
return |
|
|
|
} |
|
|
|
const changed = this.masterRows.filter(r => r.changeFlag === 1) |
|
|
|
@ -1272,16 +1350,7 @@ export default { |
|
|
|
this.batchUpdatePoOrder(changed) |
|
|
|
|
|
|
|
}, |
|
|
|
initRowEditValues () { |
|
|
|
this.rowSupplierNo = {} |
|
|
|
this.rowPartNo = {} |
|
|
|
this.masterRows.forEach(row => { |
|
|
|
if (row && row.id != null) { |
|
|
|
this.$set(this.rowSupplierNo, row.id, row.supplierNo || '') |
|
|
|
this.$set(this.rowPartNo, row.id, row.partNo || '') |
|
|
|
} |
|
|
|
}) |
|
|
|
}, |
|
|
|
|
|
|
|
getPartNoOptions() { |
|
|
|
console.log('获取分类选项') |
|
|
|
getPartList( |
|
|
|
@ -1294,7 +1363,6 @@ export default { |
|
|
|
this.poPartNoOptions = (data.rows || []).map(item => ({ |
|
|
|
label: item.partNo, |
|
|
|
value: item.partNo, |
|
|
|
partNo: item.partNo, |
|
|
|
category: item.category, |
|
|
|
sku: item.sku |
|
|
|
})) |
|
|
|
@ -1321,8 +1389,6 @@ export default { |
|
|
|
this.supplierOptions = (data.rows || []).map(item => ({ |
|
|
|
label: item.supplierName, |
|
|
|
value: item.supplierNo, |
|
|
|
supplierNo: item.supplierNo, |
|
|
|
supplierName: item.supplierName, |
|
|
|
shortOffice: item.cshortOffice, |
|
|
|
shortNpc: item.cshortNpc |
|
|
|
})) |
|
|
|
@ -1334,6 +1400,32 @@ export default { |
|
|
|
this.$message.error('操作失败: ' + error.message) |
|
|
|
}) |
|
|
|
}, |
|
|
|
getPortOptions(){ |
|
|
|
console.log('获取港口选项') |
|
|
|
searchTransportOptions( |
|
|
|
{ |
|
|
|
site: this.$store.state.user.site |
|
|
|
} |
|
|
|
).then(({data}) => { |
|
|
|
if (data && data.code === 0) { |
|
|
|
console.log('接口返回的rows:', data.rows) // 查看返回数据 |
|
|
|
|
|
|
|
this.transportOptions = (data.rows || []).map(item => ({ |
|
|
|
label: item.supplierName, |
|
|
|
value: item.supplierNo, |
|
|
|
destination: item.destination, |
|
|
|
departure: item.departure, |
|
|
|
shipVia: item.shipVia, |
|
|
|
etc: item.eta |
|
|
|
})) |
|
|
|
|
|
|
|
} else { |
|
|
|
this.$message.error(data.msg || '操作失败') |
|
|
|
} |
|
|
|
}).catch(error => { |
|
|
|
this.$message.error('操作失败: ' + error.message) |
|
|
|
}) |
|
|
|
}, |
|
|
|
// 保存订单信息 |
|
|
|
batchUpdatePoOrder(changed) { |
|
|
|
|
|
|
|
|