<template>
|
<vol-box v-model="show" title="跨区域移库" :width="800" :height="1200">
|
<template #content>
|
<el-form ref="form" :model="form" label-width="100px">
|
<el-form-item label="目标货位类型:">
|
<el-select v-model="targetLocationType" placeholder="请选择目标货位类型">
|
<el-option
|
v-for="item in locationTypes"
|
:key="item.locationType"
|
:label="item.locationTypeDesc.toString()"
|
:value="item.locationType">
|
</el-option>
|
</el-select>
|
</el-form-item>
|
</el-form>
|
</template>
|
<template #footer>
|
<div>
|
<el-button
|
type="danger"
|
size="small"
|
plain
|
@click="submit"
|
:loading="isSubmitting"
|
:disabled="isSubmitting">
|
<i class="el-icon-check">确认移库</i>
|
</el-button>
|
<el-button
|
size="small"
|
type="primary"
|
plain
|
@click="() => { this.show = false }">
|
<i class="el-icon-close">关闭</i>
|
</el-button>
|
</div>
|
</template>
|
</vol-box>
|
</template>
|
|
<script>
|
import VolBox from '@/components/basic/VolBox.vue'
|
export default {
|
components: {
|
'vol-box': VolBox
|
},
|
data() {
|
return {
|
show: false,
|
locationTypes: [],
|
targetLocationType: "",
|
isSubmitting: false,
|
form:{}
|
}
|
},
|
methods: {
|
open() {
|
this.show = true
|
this.getData();
|
},
|
submit() {
|
// 1. 验证必填项
|
if (!this.targetLocationType) {
|
this.$message.warning('请选择目标货位类型');
|
return;
|
}
|
|
// 2. 禁用按钮
|
this.isSubmitting = true;
|
|
this.$emit('parentCall', ($vue) => {
|
// 选中的表格数据
|
let stockViews = $vue.$refs.table.getSelected();
|
|
this.http.post(
|
`/api/Task/CrossAreaOutbound?targetLocationType=${this.targetLocationType}`,
|
stockViews,
|
'跨区域移库处理中...'
|
)
|
.then((x) => {
|
if (!x.status) {
|
this.$message.error(x.message)
|
} else {
|
this.show = false
|
this.$message.success(x.message || '跨区域移库任务生成成功')
|
$vue.refresh();
|
}
|
})
|
.catch((error) => {
|
this.$message.error('请求失败,请稍后重试');
|
console.error('跨区域移库失败:', error);
|
})
|
.finally(() => {
|
this.isSubmitting = false;
|
});
|
})
|
},
|
getData() {
|
this.http.post("api/LocationInfo/GetLocationTypes", null, "加载货位类型中")
|
.then((x) => {
|
this.locationTypes = x.data;
|
})
|
},
|
}
|
}
|
</script>
|