常熟吴彦祖 3 months ago
parent
commit
fb561f5151
  1. 3
      src/api/automatedWarehouse/callOut.js
  2. 2
      src/utils/httpRequest.js
  3. 96
      src/views/modules/automatedWarehouse/callOut.vue

3
src/api/automatedWarehouse/callOut.js

@ -4,3 +4,6 @@ export const saveTransportTask = data => createAPI(`/factory/tblbasedata/saveTra
export const getShopOrderFromIFSWithOrderNo = data => createAPI(`/wcsIntegration/getShopOrderFromIFSWithOrderNo`,'post',data)
export const getPalletList = data => createAPI(`/wcsIntegration/palletListForPartNo`,'post',data)
export const callPalletFromWcs = data => createAPI(`/wcsIntegration/callPalletFromWcs`,'post',data)
// 【新方法】直接Call栈板(不使用定时任务方式) - rqrq
export const callPalletFromWcsNew = data => createAPI(`/wcsIntegration/callPalletFromWcsNew`,'post',data)

2
src/utils/httpRequest.js

@ -81,7 +81,7 @@ export default http
const instance = axios.create({
baseURL: (process.env.NODE_ENV !== 'production' && process.env.OPEN_PROXY ? '/proxyApi/' : window.SITE_CONFIG.baseUrl) ,
timeout: 10000 * 30,
timeout: 10000 * 300,
withCredentials: true,
headers: {
'Content-Type': 'application/json; charset=utf-8'

96
src/views/modules/automatedWarehouse/callOut.vue

@ -15,7 +15,7 @@
<!-- <div class="search-container">-->
<!-- -->
<!-- </div>-->
<div class="table-body" style="max-height: 500px; overflow-y: auto;">
<div class="main-content form-section">
<!-- 表单区域 -->
<div class="input-group">
@ -47,20 +47,32 @@
/>
</div>
<div class="bottom-actions">
<button class="action-btn secondary" @click="confirmDo">
<div class="bottom-actions" style="display: flex; gap: 10px; flex-wrap: nowrap;">
<button class="action-btn secondary" @click="confirmDo" style="flex: 1;">
查询
</button>
<button class="action-btn secondary" style="margin-left: 10px;" @click="cleanData">
<button class="action-btn secondary" @click="cleanData" style="flex: 1;">
清空
</button>
<button
class="action-btn secondary"
@click="handleCall"
:disabled="callLoading||selectedPallets.length === 0"
style="flex: 1;"
>
{{ callLoading ? 'Call车中...' : `Call车 (${selectedPallets.length})` }}
</button>
</div>
</div>
<!-- 栈板列表 -->
<div v-if="palletList.length > 0" class="rma-list">
<div class="list-title">可用栈板列表</div>
<!-- Call车按钮 - 当有选中栈板时显示 -->
<div class="list-title" style="flex: 0.75">可用栈板列表</div>
<el-form>
<el-row v-for="(pallet, index) in palletList" :key="index" class="rma-row">
<el-col :span="24">
@ -77,12 +89,7 @@
</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>
</div>
@ -94,7 +101,8 @@ import {
saveTransportTask,
getShopOrderFromIFSWithOrderNo,
getPalletList,
callPalletFromWcs
callPalletFromWcs,
callPalletFromWcsNew
} from '../../../api/automatedWarehouse/callOut'
export default {
@ -118,6 +126,7 @@ export default {
palletList: [], //
selectedPallet: null, //
selectedPallets: [], //
callLoading: false, // Callloading - rqrq
};
},
computed: {
@ -234,33 +243,66 @@ export default {
return this.selectedPallets.some(item => item.palletId === pallet.palletId);
},
// Cal
// Call - rqrq
handleCall() {
if (this.selectedPallets.length === 0) {
this.$message.error('请至少选择一个栈板');
return;
}
// Cal
console.log('Cal操作,选中的栈板:', this.selectedPallets);
this.$confirm('确定进行[Call车]操作?', '提示', {
this.$confirm(`确定Call ${this.selectedPallets.length} 个栈板出库?`, '提示', {
confirmButtonText: '确认',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
// loading - rqrq
this.callLoading = true;
callPalletFromWcs(this.selectedPallets).then(({ data }) => {
// - rqrq
callPalletFromWcsNew(this.selectedPallets).then(({ data }) => {
if (data && data.code === 0) {
this.$message.success('成功发送运输请求!');
this.cleanData()
const failedCount = data.failedCount || 0;
const successCount = data.successCount || 0;
// - rqrq
if (failedCount === 0) {
// - rqrq
this.$message.success(`成功Call ${successCount} 个栈板出库!`);
this.cleanData();
} else {
// - rqrq
const failedPalletIds = data.failedPalletIds || [];
const failedReasons = data.failedReasons || [];
// - rqrq
let errorMsg = `成功:${successCount}个,失败:${failedCount}\n\n失败栈板:\n`;
failedPalletIds.forEach((palletId, index) => {
errorMsg += `${index + 1}. ${palletId}${failedReasons[index] || '未知错误'}\n`;
});
// - rqrq
this.$alert(errorMsg, `Call车结果`, {
confirmButtonText: '确定',
type: 'warning',
callback: () => {
// - rqrq
this.cleanData();
}
});
}
} else {
this.$message.error(data.msg || '处理失败');
this.$message.error(data.msg || 'Call车失败');
}
}).catch(error => {
console.error('处理栈板失败:', error);
this.$message.error('处理失败');
console.error('Call车失败:', error);
this.$message.error('Call车失败');
}).finally(() => {
// - rqrq
this.callLoading = false;
});
})
}).catch(() => {
// - rqrq
});
},
cleanData(){
@ -285,5 +327,11 @@ export default {
</script>
<style scoped>
/* 按钮禁用状态样式 - rqrq */
.action-btn:disabled {
opacity: 0.6;
cursor: not-allowed;
background-color: #ccc !important;
border-color: #ccc !important;
}
</style>
Loading…
Cancel
Save