<template>
|
<div>
|
<vol-box
|
v-model="showDetialBox"
|
:lazy="true"
|
width="600px"
|
:padding="15"
|
title="手动操作中心"
|
>
|
<div>
|
<el-tabs v-model="activeTab" type="card">
|
<!-- AGV标签页 不变 -->
|
<el-tab-pane label="手动AGV申请进出" name="agv">
|
<el-form
|
:model="agvUpdateRequest"
|
:rules="agvFormRules"
|
ref="formRefAGV"
|
label-width="120px"
|
>
|
<el-form-item label="库口编号" prop="warehousenumber">
|
<el-input
|
v-model="agvUpdateRequest.warehousenumber"
|
style="width: 180px"
|
placeholder="请输入库口编号"
|
></el-input>
|
</el-form-item>
|
<el-form-item label="申请类型" prop="agvstatus">
|
<el-select
|
v-model="agvUpdateRequest.agvstatus"
|
style="width: 180px"
|
placeholder="请选择申请类型"
|
>
|
<el-option
|
v-for="item in agvOptions"
|
:key="item.value"
|
:label="item.label"
|
:value="item.value"
|
/>
|
</el-select>
|
</el-form-item>
|
</el-form>
|
</el-tab-pane>
|
|
<!-- 任务标签页 → 动态判断是否显示起始地址 -->
|
<el-tab-pane label="手动创建出入库任务" name="task">
|
<el-form
|
:model="task"
|
:rules="taskFormRules"
|
ref="formRefTask"
|
label-width="120px"
|
>
|
<el-form-item label="托盘编号" prop="palletCode">
|
<el-input
|
v-model="task.palletCode"
|
style="width: 180px"
|
placeholder="请输入托盘编号"
|
></el-input>
|
</el-form-item>
|
|
<el-form-item label="任务类型" prop="taskType">
|
<el-select
|
v-model="task.taskType"
|
style="width: 180px"
|
placeholder="请选择任务类型"
|
@change="onTaskTypeChange"
|
>
|
<el-option
|
v-for="item in taskOptions"
|
:key="item.value"
|
:label="item.label"
|
:value="item.value"
|
/>
|
</el-select>
|
</el-form-item>
|
|
<!-- 起始地址:只有 入库/出库 才显示,盘点不显示 -->
|
<el-form-item
|
label="起始地址"
|
prop="sourceAddress"
|
v-if="task.taskType !== 300"
|
>
|
<el-input
|
v-model="task.sourceAddress"
|
style="width: 180px"
|
placeholder="请输入起始地址"
|
></el-input>
|
</el-form-item>
|
|
<el-form-item label="目标地址" prop="targetAddress">
|
<el-input
|
v-model="task.targetAddress"
|
style="width: 180px"
|
placeholder="请输入目标地址"
|
></el-input>
|
</el-form-item>
|
</el-form>
|
</el-tab-pane>
|
</el-tabs>
|
</div>
|
|
<template #footer>
|
<el-button type="primary" size="small" @click="submit">确认</el-button>
|
<el-button type="danger" size="small" @click="close">关闭</el-button>
|
</template>
|
</vol-box>
|
</div>
|
</template>
|
|
<script>
|
import VolBox from "@/components/basic/VolBox.vue";
|
export default {
|
components: { VolBox },
|
data() {
|
return {
|
showDetialBox: false,
|
activeTab: "agv",
|
|
// ====================== 增加盘点任务 ======================
|
taskOptions: [
|
{ label: "入库", value: 200 },
|
{ label: "出库", value: 100 },
|
{ label: "盘点", value: 300 },
|
],
|
task: {
|
palletCode: "",
|
taskType: "",
|
sourceAddress: "",
|
targetAddress: "",
|
},
|
|
// ====================== 动态校验:盘点不需要起始地址 ======================
|
taskFormRules: {
|
palletCode: [
|
{ required: true, message: "请输入托盘编号", trigger: "blur" },
|
],
|
taskType: [
|
{ required: true, message: "请选择任务类型", trigger: "change" },
|
],
|
sourceAddress: [
|
{
|
required: true,
|
message: "请输入起始地址",
|
trigger: "blur",
|
validator: (rule, value, callback) => {
|
// 盘点任务 → 不校验起始地址
|
if (this.task.taskType === 300) {
|
return callback();
|
}
|
if (!value) {
|
return callback(new Error("请输入起始地址"));
|
}
|
callback();
|
},
|
},
|
],
|
targetAddress: [
|
{ required: true, message: "请输入目标地址", trigger: "blur" },
|
],
|
},
|
|
// AGV 相关不变
|
agvOptions: [
|
{ label: "申请进入", value: 1 },
|
{ label: "申请离开", value: 2 },
|
],
|
agvUpdateRequest: {
|
warehousenumber: "",
|
agvstatus: "",
|
},
|
agvFormRules: {
|
warehousenumber: [
|
{ required: true, message: "请输入库口编号", trigger: "blur" },
|
],
|
agvstatus: [
|
{ required: true, message: "请选择申请类型", trigger: "change" },
|
],
|
},
|
};
|
},
|
methods: {
|
open() {
|
this.showDetialBox = true;
|
this.activeTab = "agv";
|
},
|
close() {
|
this.showDetialBox = false;
|
this.task = {
|
palletCode: "",
|
taskType: "",
|
sourceAddress: "",
|
targetAddress: "",
|
};
|
this.agvUpdateRequest = { warehousenumber: "", agvstatus: "" };
|
if (this.$refs.formRefTask) this.$refs.formRefTask.resetFields();
|
if (this.$refs.formRefAGV) this.$refs.formRefAGV.resetFields();
|
},
|
submit() {
|
if (this.activeTab === "task") this.submitTask();
|
else if (this.activeTab === "agv") this.submitAGV();
|
},
|
|
// 切换任务类型时清空起始地址
|
onTaskTypeChange() {
|
if (this.task.taskType === 300) {
|
this.task.sourceAddress = "";
|
}
|
},
|
|
submitTask() {
|
this.$refs.formRefTask.validate((valid) => {
|
if (!valid) return;
|
this.http.post("api/Task/CreateManualTask", this.task, "数据处理中").then((x) => {
|
if (!x.status) return this.$message.error(x.message);
|
this.$message.success("任务创建成功");
|
this.$parent.refresh();
|
this.close();
|
});
|
});
|
},
|
submitAGV() {
|
this.$refs.formRefAGV.validate((valid) => {
|
if (!valid) return;
|
this.http.post("api/Task/ManuaAGVStatus", this.agvUpdateRequest, "数据处理中").then((x) => {
|
if (!x.status) return this.$message.error(x.message);
|
this.$message.success(this.agvUpdateRequest.agvstatus === 1 ? "申请进入成功" : "申请离开成功");
|
this.$parent.refresh();
|
this.close();
|
});
|
});
|
},
|
},
|
};
|
</script>
|
|
<style scoped>
|
.el-tabs { margin-bottom: 10px; }
|
</style>
|