常熟吴彦祖 3 months ago
parent
commit
d16a9f3174
  1. 88
      src/views/modules/automatedWarehouse/palletAssembly.vue
  2. 88
      src/views/modules/automatedWarehouse/palletPacking.vue
  3. 88
      src/views/modules/automatedWarehouse/palletSorting.vue

88
src/views/modules/automatedWarehouse/palletAssembly.vue

@ -76,6 +76,17 @@
</div> </div>
</div> </div>
<!-- 第2.5是否强制整托出库 (扫描栈板后显示) - rqrq -->
<div v-if="palletScanned" class="input-group">
<el-checkbox
v-model="forceFullPalletOut"
:disabled="palletTypeDisabled"
@change="handleForceFullPalletOutChange"
style="width: 100%;">
是否强制整托出库
</el-checkbox>
</div>
<!-- 第三行筛选条件 (扫描栈板后显示) --> <!-- 第三行筛选条件 (扫描栈板后显示) -->
<div v-if="palletScanned" class="input-group"> <div v-if="palletScanned" class="input-group">
<label class="input-label">位置</label> <label class="input-label">位置</label>
@ -285,17 +296,17 @@
positionGrid.length === 4 ? 'position-grid-4' : 'position-grid-9' positionGrid.length === 4 ? 'position-grid-4' : 'position-grid-9'
]"> ]">
<div <div
v-for="(position, index) in positionGrid"
v-for="(item, index) in positionGrid"
:key="index" :key="index"
class="position-item" class="position-item"
:class="{ :class="{
'position-disabled': positionGridLoading || !availablePositions.includes(position),
'position-selected': currentSelectedPosition === position,
'position-disabled': positionGridLoading || !availablePositions.includes(item.position),
'position-selected': currentSelectedPosition === item.position,
'position-loading': positionGridLoading 'position-loading': positionGridLoading
}" }"
@click="handlePositionClick(position)"
@click="handlePositionClick(item.position)"
> >
{{ position }}
{{ item.position }}({{ item.count }})
</div> </div>
</div> </div>
</div> </div>
@ -478,6 +489,7 @@ export default {
currentPalletFamily: '', // currentPalletFamily: '', //
currentPalletType: '', // currentPalletType: '', //
currentAutoSort: '', // Y/N currentAutoSort: '', // Y/N
forceFullPalletOut: false, // - rqrq
palletTypeOptions: [], // palletTypeOptions: [], //
palletTypeDisabled: false, // palletTypeDisabled: false, //
autoSortDisabled: false, // autoSortDisabled: false, //
@ -499,7 +511,7 @@ export default {
needRefreshOnClose: false, // needRefreshOnClose: false, //
// - rqrq // - rqrq
positionGrid: [], // 49
positionGrid: [], // 49,: [{position: '1', count: 2}, ...]
availablePositions: [], // availablePositions: [], //
currentSelectedPosition: '', // currentSelectedPosition: '', //
currentMixedMode: false, // currentMixedMode: false, //
@ -553,6 +565,7 @@ export default {
this.currentPalletFamily = ''; this.currentPalletFamily = '';
this.currentPalletType = ''; this.currentPalletType = '';
this.currentAutoSort = ''; this.currentAutoSort = '';
this.forceFullPalletOut = false; // - rqrq
this.palletTypeOptions = []; this.palletTypeOptions = [];
this.palletTypeDisabled = false; this.palletTypeDisabled = false;
this.autoSortDisabled = false; this.autoSortDisabled = false;
@ -774,13 +787,21 @@ export default {
this.savePalletTypeAndAutoSort(); this.savePalletTypeAndAutoSort();
}, },
//
// - rqrq
handleForceFullPalletOutChange() {
console.log('是否强制整托出库变更 - rqrq,forceFullPalletOut=' + this.forceFullPalletOut);
//
this.savePalletTypeAndAutoSort();
},
// - rqrq
savePalletTypeAndAutoSort() { savePalletTypeAndAutoSort() {
updatePalletTypeAndAutoSort({ updatePalletTypeAndAutoSort({
site: this.site, site: this.site,
palletId: this.palletCode, palletId: this.palletCode,
palletType: this.currentPalletType, palletType: this.currentPalletType,
autoSort: this.currentAutoSort
autoSort: this.currentAutoSort,
forceFullPalletOut: this.forceFullPalletOut // - rqrq
}).then(({ data }) => { }).then(({ data }) => {
if (data.code === 0) { if (data.code === 0) {
this.$message.success('更新成功'); this.$message.success('更新成功');
@ -960,26 +981,55 @@ export default {
this.positionGridLoading = true; this.positionGridLoading = true;
this.availablePositions = []; // this.availablePositions = []; //
getAvailablePositionsForLayer({
// position - rqrq
getPalletDetails({
site: this.site, site: this.site,
palletId: this.palletCode, palletId: this.palletCode,
position: '',
layer: this.scanLayer layer: this.scanLayer
}).then(({ data }) => {
if (data && data.code === 0) {
const result = data.data;
this.positionGrid = result.positions || [];
this.availablePositions = result.availablePositions || [];
console.log('位置网格加载完成 - 总位置:' + this.positionGrid.length + ',可用:' + this.availablePositions.length + ' - rqrq');
} else {
this.$message.error(data.msg || '获取位置信息失败');
// - rqrq
this.availablePositions = [];
}).then(({ data: detailData }) => {
// position - rqrq
const positionCountMap = {};
if (detailData && detailData.code === 0) {
const details = detailData.details || [];
details.forEach(detail => {
const pos = detail.position;
positionCountMap[pos] = (positionCountMap[pos] || 0) + 1;
});
console.log('当前层(' + this.scanLayer + ')各位置数量统计 - rqrq:', positionCountMap);
} }
// - rqrq
return getAvailablePositionsForLayer({
site: this.site,
palletId: this.palletCode,
layer: this.scanLayer
}).then(({ data }) => {
if (data && data.code === 0) {
const result = data.data;
const positions = result.positions || [];
this.availablePositions = result.availablePositions || [];
// positionscount - rqrq
this.positionGrid = positions.map(position => ({
position: position,
count: positionCountMap[position] || 0
}));
console.log('位置网格加载完成 - 总位置:' + this.positionGrid.length + ',可用:' + this.availablePositions.length + ' - rqrq');
} else {
this.$message.error(data.msg || '获取位置信息失败');
// - rqrq
this.availablePositions = [];
this.positionGrid = [];
}
});
}).catch(error => { }).catch(error => {
console.error('获取位置信息失败:', error); console.error('获取位置信息失败:', error);
this.$message.error('获取位置信息失败'); this.$message.error('获取位置信息失败');
// - rqrq // - rqrq
this.availablePositions = []; this.availablePositions = [];
this.positionGrid = [];
}).finally(() => { }).finally(() => {
// - rqrq // - rqrq
this.positionGridLoading = false; this.positionGridLoading = false;

88
src/views/modules/automatedWarehouse/palletPacking.vue

@ -76,6 +76,17 @@
</div> </div>
</div> </div>
<!-- 第2.5是否强制整托出库 (扫描栈板后显示) - rqrq -->
<div v-if="palletScanned" class="input-group">
<el-checkbox
v-model="forceFullPalletOut"
:disabled="palletTypeDisabled"
@change="handleForceFullPalletOutChange"
style="width: 100%;">
是否强制整托出库
</el-checkbox>
</div>
<!-- 第三行筛选条件 (扫描栈板后显示) --> <!-- 第三行筛选条件 (扫描栈板后显示) -->
<div v-if="palletScanned" class="input-group"> <div v-if="palletScanned" class="input-group">
<label class="input-label">位置</label> <label class="input-label">位置</label>
@ -283,17 +294,17 @@
positionGrid.length === 4 ? 'position-grid-4' : 'position-grid-9' positionGrid.length === 4 ? 'position-grid-4' : 'position-grid-9'
]"> ]">
<div <div
v-for="(position, index) in positionGrid"
v-for="(item, index) in positionGrid"
:key="index" :key="index"
class="position-item" class="position-item"
:class="{ :class="{
'position-disabled': positionGridLoading || !availablePositions.includes(position),
'position-selected': currentSelectedPosition === position,
'position-disabled': positionGridLoading || !availablePositions.includes(item.position),
'position-selected': currentSelectedPosition === item.position,
'position-loading': positionGridLoading 'position-loading': positionGridLoading
}" }"
@click="handlePositionClick(position)"
@click="handlePositionClick(item.position)"
> >
{{ position }}
{{ item.position }}({{ item.count }})
</div> </div>
</div> </div>
</div> </div>
@ -537,6 +548,7 @@ export default {
currentPalletFamily: '', // currentPalletFamily: '', //
currentPalletType: '', // currentPalletType: '', //
currentAutoSort: '', // Y/N currentAutoSort: '', // Y/N
forceFullPalletOut: false, // - rqrq
palletTypeOptions: [], // palletTypeOptions: [], //
palletTypeDisabled: false, // palletTypeDisabled: false, //
autoSortDisabled: false, // autoSortDisabled: false, //
@ -558,7 +570,7 @@ export default {
needRefreshOnClose: false, // needRefreshOnClose: false, //
// - rqrq // - rqrq
positionGrid: [], // 49
positionGrid: [], // 49,: [{position: '1', count: 2}, ...]
availablePositions: [], // availablePositions: [], //
currentSelectedPosition: '', // currentSelectedPosition: '', //
currentMixedMode: false, // currentMixedMode: false, //
@ -618,6 +630,7 @@ export default {
this.currentPalletFamily = ''; this.currentPalletFamily = '';
this.currentPalletType = ''; this.currentPalletType = '';
this.currentAutoSort = ''; this.currentAutoSort = '';
this.forceFullPalletOut = false; // - rqrq
this.palletTypeOptions = []; this.palletTypeOptions = [];
this.palletTypeDisabled = false; this.palletTypeDisabled = false;
this.autoSortDisabled = false; this.autoSortDisabled = false;
@ -843,13 +856,21 @@ export default {
this.savePalletTypeAndAutoSort(); this.savePalletTypeAndAutoSort();
}, },
//
// - rqrq
handleForceFullPalletOutChange() {
console.log('是否强制整托出库变更 - rqrq,forceFullPalletOut=' + this.forceFullPalletOut);
//
this.savePalletTypeAndAutoSort();
},
// - rqrq
savePalletTypeAndAutoSort() { savePalletTypeAndAutoSort() {
updatePalletTypeAndAutoSort({ updatePalletTypeAndAutoSort({
site: this.site, site: this.site,
palletId: this.palletCode, palletId: this.palletCode,
palletType: this.currentPalletType, palletType: this.currentPalletType,
autoSort: this.currentAutoSort
autoSort: this.currentAutoSort,
forceFullPalletOut: this.forceFullPalletOut // - rqrq
}).then(({ data }) => { }).then(({ data }) => {
if (data.code === 0) { if (data.code === 0) {
this.$message.success('更新成功'); this.$message.success('更新成功');
@ -1030,26 +1051,55 @@ export default {
this.positionGridLoading = true; this.positionGridLoading = true;
this.availablePositions = []; // this.availablePositions = []; //
getAvailablePositionsForLayer({
// position - rqrq
getPalletDetails({
site: this.site, site: this.site,
palletId: this.palletCode, palletId: this.palletCode,
position: '',
layer: this.scanLayer layer: this.scanLayer
}).then(({ data }) => {
if (data && data.code === 0) {
const result = data.data;
this.positionGrid = result.positions || [];
this.availablePositions = result.availablePositions || [];
console.log('位置网格加载完成 - 总位置:' + this.positionGrid.length + ',可用:' + this.availablePositions.length + ' - rqrq');
} else {
this.$message.error(data.msg || '获取位置信息失败');
// - rqrq
this.availablePositions = [];
}).then(({ data: detailData }) => {
// position - rqrq
const positionCountMap = {};
if (detailData && detailData.code === 0) {
const details = detailData.details || [];
details.forEach(detail => {
const pos = detail.position;
positionCountMap[pos] = (positionCountMap[pos] || 0) + 1;
});
console.log('当前层(' + this.scanLayer + ')各位置数量统计 - rqrq:', positionCountMap);
} }
// - rqrq
return getAvailablePositionsForLayer({
site: this.site,
palletId: this.palletCode,
layer: this.scanLayer
}).then(({ data }) => {
if (data && data.code === 0) {
const result = data.data;
const positions = result.positions || [];
this.availablePositions = result.availablePositions || [];
// positionscount - rqrq
this.positionGrid = positions.map(position => ({
position: position,
count: positionCountMap[position] || 0
}));
console.log('位置网格加载完成 - 总位置:' + this.positionGrid.length + ',可用:' + this.availablePositions.length + ' - rqrq');
} else {
this.$message.error(data.msg || '获取位置信息失败');
// - rqrq
this.availablePositions = [];
this.positionGrid = [];
}
});
}).catch(error => { }).catch(error => {
console.error('获取位置信息失败:', error); console.error('获取位置信息失败:', error);
this.$message.error('获取位置信息失败'); this.$message.error('获取位置信息失败');
// - rqrq // - rqrq
this.availablePositions = []; this.availablePositions = [];
this.positionGrid = [];
}).finally(() => { }).finally(() => {
// - rqrq // - rqrq
this.positionGridLoading = false; this.positionGridLoading = false;

88
src/views/modules/automatedWarehouse/palletSorting.vue

@ -76,6 +76,17 @@
</div> </div>
</div> </div>
<!-- 第2.5是否强制整托出库 (扫描栈板后显示) - rqrq -->
<div v-if="palletScanned" class="input-group">
<el-checkbox
v-model="forceFullPalletOut"
:disabled="palletTypeDisabled"
@change="handleForceFullPalletOutChange"
style="width: 100%;">
是否强制整托出库
</el-checkbox>
</div>
<!-- 第三行筛选条件 (扫描栈板后显示) --> <!-- 第三行筛选条件 (扫描栈板后显示) -->
<div v-if="palletScanned" class="input-group"> <div v-if="palletScanned" class="input-group">
<label class="input-label">位置</label> <label class="input-label">位置</label>
@ -241,17 +252,17 @@
positionGrid.length === 4 ? 'position-grid-4' : 'position-grid-9' positionGrid.length === 4 ? 'position-grid-4' : 'position-grid-9'
]"> ]">
<div <div
v-for="(position, index) in positionGrid"
v-for="(item, index) in positionGrid"
:key="index" :key="index"
class="position-item" class="position-item"
:class="{ :class="{
'position-disabled': positionGridLoading || !availablePositions.includes(position),
'position-selected': currentSelectedPosition === position,
'position-disabled': positionGridLoading || !availablePositions.includes(item.position),
'position-selected': currentSelectedPosition === item.position,
'position-loading': positionGridLoading 'position-loading': positionGridLoading
}" }"
@click="handlePositionClick(position)"
@click="handlePositionClick(item.position)"
> >
{{ position }}
{{ item.position }}({{ item.count }})
</div> </div>
</div> </div>
</div> </div>
@ -436,6 +447,7 @@ export default {
currentPalletFamily: '', // currentPalletFamily: '', //
currentPalletType: '', // currentPalletType: '', //
currentAutoSort: '', // Y/N currentAutoSort: '', // Y/N
forceFullPalletOut: false, // - rqrq
palletTypeOptions: [], // palletTypeOptions: [], //
palletTypeDisabled: false, // palletTypeDisabled: false, //
autoSortDisabled: false, // autoSortDisabled: false, //
@ -457,7 +469,7 @@ export default {
needRefreshOnClose: false, // needRefreshOnClose: false, //
// - rqrq // - rqrq
positionGrid: [], // 49
positionGrid: [], // 49,: [{position: '1', count: 2}, ...]
availablePositions: [], // availablePositions: [], //
currentSelectedPosition: '', // currentSelectedPosition: '', //
currentMixedMode: false, // currentMixedMode: false, //
@ -512,6 +524,7 @@ export default {
this.currentPalletFamily = ''; this.currentPalletFamily = '';
this.currentPalletType = ''; this.currentPalletType = '';
this.currentAutoSort = ''; this.currentAutoSort = '';
this.forceFullPalletOut = false; // - rqrq
this.palletTypeOptions = []; this.palletTypeOptions = [];
this.palletTypeDisabled = false; this.palletTypeDisabled = false;
this.autoSortDisabled = false; this.autoSortDisabled = false;
@ -733,13 +746,21 @@ export default {
this.savePalletTypeAndAutoSort(); this.savePalletTypeAndAutoSort();
}, },
//
// - rqrq
handleForceFullPalletOutChange() {
console.log('是否强制整托出库变更 - rqrq,forceFullPalletOut=' + this.forceFullPalletOut);
//
this.savePalletTypeAndAutoSort();
},
// - rqrq
savePalletTypeAndAutoSort() { savePalletTypeAndAutoSort() {
updatePalletTypeAndAutoSort({ updatePalletTypeAndAutoSort({
site: this.site, site: this.site,
palletId: this.palletCode, palletId: this.palletCode,
palletType: this.currentPalletType, palletType: this.currentPalletType,
autoSort: this.currentAutoSort
autoSort: this.currentAutoSort,
forceFullPalletOut: this.forceFullPalletOut // - rqrq
}).then(({ data }) => { }).then(({ data }) => {
if (data.code === 0) { if (data.code === 0) {
this.$message.success('更新成功'); this.$message.success('更新成功');
@ -919,26 +940,55 @@ export default {
this.positionGridLoading = true; this.positionGridLoading = true;
this.availablePositions = []; // this.availablePositions = []; //
getAvailablePositionsForLayer({
// position - rqrq
getPalletDetails({
site: this.site, site: this.site,
palletId: this.palletCode, palletId: this.palletCode,
position: '',
layer: this.scanLayer layer: this.scanLayer
}).then(({ data }) => {
if (data && data.code === 0) {
const result = data.data;
this.positionGrid = result.positions || [];
this.availablePositions = result.availablePositions || [];
console.log('位置网格加载完成 - 总位置:' + this.positionGrid.length + ',可用:' + this.availablePositions.length + ' - rqrq');
} else {
this.$message.error(data.msg || '获取位置信息失败');
// - rqrq
this.availablePositions = [];
}).then(({ data: detailData }) => {
// position - rqrq
const positionCountMap = {};
if (detailData && detailData.code === 0) {
const details = detailData.details || [];
details.forEach(detail => {
const pos = detail.position;
positionCountMap[pos] = (positionCountMap[pos] || 0) + 1;
});
console.log('当前层(' + this.scanLayer + ')各位置数量统计 - rqrq:', positionCountMap);
} }
// - rqrq
return getAvailablePositionsForLayer({
site: this.site,
palletId: this.palletCode,
layer: this.scanLayer
}).then(({ data }) => {
if (data && data.code === 0) {
const result = data.data;
const positions = result.positions || [];
this.availablePositions = result.availablePositions || [];
// positionscount - rqrq
this.positionGrid = positions.map(position => ({
position: position,
count: positionCountMap[position] || 0
}));
console.log('位置网格加载完成 - 总位置:' + this.positionGrid.length + ',可用:' + this.availablePositions.length + ' - rqrq');
} else {
this.$message.error(data.msg || '获取位置信息失败');
// - rqrq
this.availablePositions = [];
this.positionGrid = [];
}
});
}).catch(error => { }).catch(error => {
console.error('获取位置信息失败:', error); console.error('获取位置信息失败:', error);
this.$message.error('获取位置信息失败'); this.$message.error('获取位置信息失败');
// - rqrq // - rqrq
this.availablePositions = []; this.availablePositions = [];
this.positionGrid = [];
}).finally(() => { }).finally(() => {
// - rqrq // - rqrq
this.positionGridLoading = false; this.positionGridLoading = false;

Loading…
Cancel
Save