|
|
|
@ -47,10 +47,9 @@ |
|
|
|
/> |
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
<div class="bottom-actions"> |
|
|
|
<button class="action-btn secondary" @click="confirmDo"> |
|
|
|
确定 |
|
|
|
查询 |
|
|
|
</button> |
|
|
|
|
|
|
|
<button class="action-btn secondary" style="margin-left: 10px;" @click="cleanData"> |
|
|
|
@ -58,13 +57,40 @@ |
|
|
|
</button> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
|
|
|
|
<!-- 栈板列表 --> |
|
|
|
<div v-if="palletList.length > 0" class="rma-list"> |
|
|
|
<div class="list-title">可用栈板列表</div> |
|
|
|
<el-form> |
|
|
|
<el-row v-for="(pallet, index) in palletList" :key="index" class="rma-row"> |
|
|
|
<el-col :span="24"> |
|
|
|
<div class="rma-item" @click="selectPallet(pallet)" :class="{ 'selected': isSelected(pallet) }"> |
|
|
|
<div class="item-info"> |
|
|
|
<span class="part-no">栈板号: {{ pallet.palletId }}</span> |
|
|
|
<span class="batch-qty">物料: {{ pallet.partNo }} | 数量: {{ pallet.qty }}</span> |
|
|
|
</div> |
|
|
|
<div class="item-status"> |
|
|
|
<i class="el-icon-check" v-if="isSelected(pallet)"></i> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</el-col> |
|
|
|
</el-row> |
|
|
|
</el-form> |
|
|
|
|
|
|
|
<!-- Call车按钮 - 当有选中栈板时显示 --> |
|
|
|
<div v-if="selectedPallets.length > 0" class="bottom-actions"> |
|
|
|
<button class="action-btn secondary" @click="handleCall"> |
|
|
|
Call车 ({{ selectedPallets.length }}) |
|
|
|
</button> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</template> |
|
|
|
|
|
|
|
<script> |
|
|
|
|
|
|
|
import {saveTransportTask, getShopOrderFromIFSWithOrderNo} from '../../../api/automatedWarehouse/callOut' |
|
|
|
import {saveTransportTask, getShopOrderFromIFSWithOrderNo, getPalletList} from '../../../api/automatedWarehouse/callOut' |
|
|
|
|
|
|
|
export default { |
|
|
|
data() { |
|
|
|
@ -83,7 +109,10 @@ export default { |
|
|
|
batchNo: '', |
|
|
|
rollNo: '', |
|
|
|
site:localStorage.getItem('site'), |
|
|
|
} |
|
|
|
}, |
|
|
|
palletList: [], // 栈板列表 |
|
|
|
selectedPallet: null, // 选中的栈板 |
|
|
|
selectedPallets: [], // 多选时选中的栈板列表 |
|
|
|
}; |
|
|
|
}, |
|
|
|
computed: { |
|
|
|
@ -135,23 +164,81 @@ export default { |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
// 查询栈板列表 |
|
|
|
confirmDo() { |
|
|
|
if(this.formData.partNo==null||this.formData.partNo===''){ |
|
|
|
this.$message.error('请输入物料编码'); |
|
|
|
return; |
|
|
|
} |
|
|
|
saveTransportTask(this.formData).then(({ data }) => { |
|
|
|
|
|
|
|
// 构建查询参数 |
|
|
|
const queryParams = { |
|
|
|
site: this.formData.site, |
|
|
|
partNo: this.formData.partNo |
|
|
|
}; |
|
|
|
|
|
|
|
// 如果有批号,添加到查询参数 |
|
|
|
if (this.formData.batchNo && this.formData.batchNo.trim()) { |
|
|
|
queryParams.batchNo = this.formData.batchNo.trim(); |
|
|
|
} |
|
|
|
|
|
|
|
getPalletList(queryParams).then(({ data }) => { |
|
|
|
if (data && data.code === 0) { |
|
|
|
this.$message.success('操作成功'); |
|
|
|
this.cleanData() |
|
|
|
this.palletList = data.rows || []; |
|
|
|
if (this.palletList.length === 0) { |
|
|
|
this.$message.warning('未找到满足条件的栈板'); |
|
|
|
} else { |
|
|
|
this.$message.success(`找到 ${this.palletList.length} 个栈板`); |
|
|
|
} |
|
|
|
// 清空之前选中的栈板 |
|
|
|
this.selectedPallet = null; |
|
|
|
this.selectedPallets = []; // 清空多选选中的栈板 |
|
|
|
} else { |
|
|
|
this.$message.error(data.msg || '操作失败'); |
|
|
|
this.$message.error(data.msg || '查询失败'); |
|
|
|
this.palletList = []; |
|
|
|
this.selectedPallet = null; |
|
|
|
this.selectedPallets = []; // 清空多选选中的栈板 |
|
|
|
} |
|
|
|
}).catch(error => { |
|
|
|
console.error('出库确认失败:', error); |
|
|
|
this.$message.error('操作失败'); |
|
|
|
console.error('查询栈板列表失败:', error); |
|
|
|
this.$message.error('查询失败'); |
|
|
|
this.palletList = []; |
|
|
|
this.selectedPallet = null; |
|
|
|
this.selectedPallets = []; // 清空多选选中的栈板 |
|
|
|
}); |
|
|
|
}, |
|
|
|
|
|
|
|
// 选择栈板 |
|
|
|
selectPallet(pallet) { |
|
|
|
const index = this.selectedPallets.findIndex(item => item.palletId === pallet.palletId); |
|
|
|
if (index > -1) { |
|
|
|
this.selectedPallets.splice(index, 1); |
|
|
|
this.$message.success('已取消选择栈板'); |
|
|
|
} else { |
|
|
|
this.selectedPallets.push(pallet); |
|
|
|
this.$message.success(`已选择栈板: ${pallet.palletId}`); |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
// 判断栈板是否被选中 |
|
|
|
isSelected(pallet) { |
|
|
|
return this.selectedPallets.some(item => item.palletId === pallet.palletId); |
|
|
|
}, |
|
|
|
|
|
|
|
// 处理Cal按钮点击 |
|
|
|
handleCall() { |
|
|
|
if (this.selectedPallets.length === 0) { |
|
|
|
this.$message.error('请至少选择一个栈板'); |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
// 这里添加Cal按钮的具体逻辑 |
|
|
|
console.log('Cal操作,选中的栈板:', this.selectedPallets); |
|
|
|
this.$message.success(`正在处理栈板: ${this.selectedPallets.map(p => p.palletId).join(', ')}`); |
|
|
|
|
|
|
|
// TODO: 调用相关API或执行其他操作 |
|
|
|
}, |
|
|
|
|
|
|
|
cleanData(){ |
|
|
|
// 更安全的清空方式 |
|
|
|
this.formData = { |
|
|
|
@ -161,7 +248,10 @@ export default { |
|
|
|
rollNo: '', |
|
|
|
site:localStorage.getItem('site'), |
|
|
|
}; |
|
|
|
|
|
|
|
// 清空栈板列表和选中状态 |
|
|
|
this.palletList = []; |
|
|
|
this.selectedPallet = null; |
|
|
|
this.selectedPallets = []; // 清空多选选中的栈板 |
|
|
|
}, |
|
|
|
|
|
|
|
}, |
|
|
|
|