hgwms-2098 fix 任务路径弹窗修改

hwork-master
A0066811 2025-11-07 13:26:59 +08:00
parent f5751c70d9
commit 0e204f5cee
2 changed files with 586 additions and 397 deletions

View File

@ -1,157 +1,248 @@
<template> <template>
<a-modal :open="visible" title="编辑区域出入口信息" cancelText="取消" okText="提交" @ok="submit" @cancel="cancel"> <a-modal
<a-form ref="formRef" :model="formState" :rules="formRules" :label-col="labelCol" :wrapper-col="wrapperCol"> :open="visible"
title="编辑区域出入口信息"
cancelText="取消"
okText="提交"
@ok="submit"
@cancel="cancel"
>
<a-form
ref="formRef"
:model="formState"
:rules="formRules"
layout="vertical"
>
<a-row :gutter="[16, 0]">
<a-col :span="12">
<a-form-item ref="equipCode" label="设备号" name="equipCode"> <a-form-item ref="equipCode" label="设备号" name="equipCode">
<a-input v-model:value="formState.equipCode" placeholder="请输入设备号" /> <a-input
v-model:value="formState.equipCode"
placeholder="请输入设备号"
/>
</a-form-item> </a-form-item>
</a-col>
<a-col :span="12">
<a-form-item ref="sourceLoc" label="起始地址" name="sourceLoc"> <a-form-item ref="sourceLoc" label="起始地址" name="sourceLoc">
<a-input v-model:value="formState.sourceLoc" placeholder="请输入起始地址" /> <a-input
v-model:value="formState.sourceLoc"
placeholder="请输入起始地址"
/>
</a-form-item> </a-form-item>
</a-col>
<a-col :span="12">
<a-form-item ref="targetLoc" label="目标地址" name="targetLoc"> <a-form-item ref="targetLoc" label="目标地址" name="targetLoc">
<a-input v-model:value="formState.targetLoc" placeholder="请输入目标地址" /> <a-input
v-model:value="formState.targetLoc"
placeholder="请输入目标地址"
/>
</a-form-item> </a-form-item>
</a-col>
<a-col :span="12">
<a-form-item ref="equipType" label="设备类型" name="equipType"> <a-form-item ref="equipType" label="设备类型" name="equipType">
<a-select v-model:value="formState.equipType" :options="equipTypes" placeholder="请选择设备类型" /> <a-select
v-model:value="formState.equipType"
:options="equipTypes"
placeholder="请选择设备类型"
/>
</a-form-item> </a-form-item>
</a-col>
<a-col :span="12">
<a-form-item ref="ext3" label="任务类型" name="ext3"> <a-form-item ref="ext3" label="任务类型" name="ext3">
<a-select v-model:value="formState.ext3" :options="taskTypes" placeholder="任务类型" /> <a-select
v-model:value="formState.ext3"
:options="taskTypes"
placeholder="任务类型"
/>
</a-form-item> </a-form-item>
</a-col>
<a-col :span="12">
<a-form-item ref="exitDesc" label="路径描述" name="exitDesc"> <a-form-item ref="exitDesc" label="路径描述" name="exitDesc">
<a-input v-model:value="formState.exitDesc" placeholder="请输入路径描述" /> <a-input
v-model:value="formState.exitDesc"
placeholder="请输入路径描述"
/>
</a-form-item> </a-form-item>
</a-col>
<a-col :span="12">
<a-form-item ref="directFlag" label="方向标志" name="directFlag"> <a-form-item ref="directFlag" label="方向标志" name="directFlag">
<a-select v-model:value="formState.directFlag" :options="directFlags" placeholder="请选择方向标志" /> <a-select
v-model:value="formState.directFlag"
:options="directFlags"
placeholder="请选择方向标志"
/>
</a-form-item> </a-form-item>
</a-col>
<a-col :span="12">
<a-form-item ref="taskLimit" label="任务数限制" name="taskLimit"> <a-form-item ref="taskLimit" label="任务数限制" name="taskLimit">
<a-input-number v-model:value="formState.taskLimit" placeholder="请输入任务数限制" style="width: 100%;"/> <a-input-number
v-model:value="formState.taskLimit"
placeholder="请输入任务数限制"
style="width: 100%"
/>
</a-form-item> </a-form-item>
</a-col>
<a-col :span="12">
<a-form-item ref="equipStatus" label="设备状态" name="equipStatus"> <a-form-item ref="equipStatus" label="设备状态" name="equipStatus">
<a-select v-model:value="formState.equipStatus" :options="equipStatusOptions" placeholder="请选择设备状态" /> <a-select
v-model:value="formState.equipStatus"
:options="equipStatusOptions"
placeholder="请选择设备状态"
/>
</a-form-item> </a-form-item>
</a-col>
<a-col :span="12">
<a-form-item ref="logicStatus" label="逻辑状态" name="logicStatus"> <a-form-item ref="logicStatus" label="逻辑状态" name="logicStatus">
<a-select v-model:value="formState.logicStatus" :options="logicStatusOptions" placeholder="请选择逻辑状态" :disabled="true" /> <a-select
v-model:value="formState.logicStatus"
:options="logicStatusOptions"
placeholder="请选择逻辑状态"
:disabled="true"
/>
</a-form-item> </a-form-item>
</a-col>
<a-col :span="24">
<a-form-item label="备注" name="remark"> <a-form-item label="备注" name="remark">
<a-textarea v-model:value="formState.remark" /> <a-textarea v-model:value="formState.remark" />
</a-form-item> </a-form-item>
</a-col>
</a-row>
</a-form> </a-form>
</a-modal> </a-modal>
</template> </template>
<script> <script>
import { import { message } from "@hwork/ant-design-vue";
message import { edit } from "@/api/wms/locExit";
} from '@hwork/ant-design-vue'; import { defineComponent, reactive, ref, toRaw, watch } from "vue";
import { export default defineComponent({
edit
} from "@/api/wms/locExit";
import {
defineComponent,
reactive,
ref,
toRaw,
watch
} from "vue";
export default defineComponent({
props: { props: {
visible: { visible: {
type: Boolean, type: Boolean,
}, },
record: { record: {
type: Object, type: Object,
} },
}, },
emit: ["close"], emit: ["close"],
setup(props, context) { setup(props, context) {
const formRef = ref(); const formRef = ref();
const formState = reactive({}); const formState = reactive({});
const taskTypes = ref([{ const taskTypes = ref([
value: 'In', {
label: '入库', value: "In",
}, { label: "入库",
value: 'Out', },
label: '出库', {
}, { value: "Out",
value: 'Move', label: "出库",
label: '移库', },
}, { {
value: 'CheckOut', value: "Move",
label: '抽检出库', label: "移库",
}, { },
value: 'CheckReturn', {
label: '抽检返库', value: "CheckOut",
}, { label: "抽检出库",
value: 'InventoryOut', },
label: '盘点出库', {
}, { value: "CheckReturn",
value: 'InventoryReturn', label: "抽检返库",
label: '盘点返库', },
}, { {
value: 'EmptyIn', value: "InventoryOut",
label: '空托入库', label: "盘点出库",
}, { },
value: 'EmptyOut', {
label: '空托出库', value: "InventoryReturn",
}, { label: "盘点返库",
value: 'PickReturn', },
label: '拣选返库', {
}, { value: "EmptyIn",
value: 'MoveCommand', label: "空托入库",
label: '单机移动指令', },
}, { {
value: 'EmptyRackCall', value: "EmptyOut",
label: '空工装呼叫', label: "空托出库",
}, { },
value: 'LineCall', {
label: '线边叫料', value: "PickReturn",
}]); label: "拣选返库",
},
{
value: "MoveCommand",
label: "单机移动指令",
},
{
value: "EmptyRackCall",
label: "空工装呼叫",
},
{
value: "LineCall",
label: "线边叫料",
},
]);
const equipTypes = ref([{ const equipTypes = ref([
value: 'Stacker', {
label: '堆垛机', value: "Stacker",
}, { label: "堆垛机",
value: 'Station', },
label: '站台', {
}, { value: "Station",
value: 'Conveyer', label: "站台",
label: '小车', },
}, { {
value: 'Agv', value: "Conveyer",
label: 'AGV', label: "小车",
}]); },
{
value: "Agv",
label: "AGV",
},
]);
const directFlags = ref([{ const directFlags = ref([
value: 'In', {
label: '向里', value: "In",
}, { label: "向里",
value: 'Out', },
label: '向外', {
}, { value: "Out",
value: 'Move', label: "向外",
label: '移动', },
}]); {
value: "Move",
label: "移动",
},
]);
const equipStatusOptions = ref([{ const equipStatusOptions = ref([
{
value: true, value: true,
label: '是', label: "是",
}, { },
{
value: false, value: false,
label: '否', label: "否",
}]); },
]);
const logicStatusOptions = ref([{ const logicStatusOptions = ref([
{
value: true, value: true,
label: '是', label: "是",
}, { },
{
value: false, value: false,
label: '否', label: "否",
}]); },
]);
watch(props, (props) => { watch(props, (props) => {
console.log("props.record",props.record) console.log("props.record", props.record);
formState.id = props.record.id formState.id = props.record.id;
formState.equipCode = props.record.equipCode; formState.equipCode = props.record.equipCode;
formState.sourceLoc = props.record.sourceLoc; formState.sourceLoc = props.record.sourceLoc;
formState.targetLoc = props.record.targetLoc; formState.targetLoc = props.record.targetLoc;
@ -162,74 +253,89 @@
formState.equipStatus = props.record.equipStatus; formState.equipStatus = props.record.equipStatus;
formState.logicStatus = props.record.logicStatus; formState.logicStatus = props.record.logicStatus;
formState.remark = props.record.remark; formState.remark = props.record.remark;
}) });
const formRules = { const formRules = {
equipCode: [{ equipCode: [
{
required: true, required: true,
message: '请输入设备号(必填)', message: "请输入设备号(必填)",
trigger: 'blur' trigger: "blur",
}], },
sourceLoc: [{ ],
sourceLoc: [
{
required: true, required: true,
message: '请输入起始地址(必填)', message: "请输入起始地址(必填)",
trigger: 'blur' trigger: "blur",
}], },
targetLoc: [{ ],
targetLoc: [
{
required: true, required: true,
message: '请输入目标地址(必填)', message: "请输入目标地址(必填)",
trigger: 'blur', trigger: "blur",
}], },
equipType: [{ ],
equipType: [
{
required: true, required: true,
message: '请选择设备类型(必选)', message: "请选择设备类型(必选)",
trigger: 'blur', trigger: "blur",
}], },
equipStatus: [{ ],
equipStatus: [
{
required: true, required: true,
message: '请选择设备状态(必选)', message: "请选择设备状态(必选)",
trigger: 'blur', trigger: "blur",
type: 'boolean' type: "boolean",
}], },
logicStatus: [{ ],
logicStatus: [
{
required: true, required: true,
message: '请选择逻辑状态(必选)', message: "请选择逻辑状态(必选)",
trigger: 'blur', trigger: "blur",
type: 'boolean' type: "boolean",
}], },
],
}; };
const editKey = "add"; const editKey = "add";
const submit = (e) => { const submit = (e) => {
message.loading({ message.loading({
content: '提交中...', content: "提交中...",
key: editKey key: editKey,
}); });
formRef.value formRef.value
.validate() .validate()
.then(() => { .then(() => {
edit(toRaw(formState)).then((response) => { edit(toRaw(formState)).then((response) => {
if (response.success) { if (response.success) {
message.success({ message
content: '保存成功', .success({
content: "保存成功",
key: editKey, key: editKey,
duration: 1 duration: 1,
}).then(() => { })
.then(() => {
cancel(); cancel();
}); });
} else { } else {
message.error({ message
.error({
content: response.msg, content: response.msg,
key: editKey, key: editKey,
duration: 1 duration: 1,
}).then(() => { })
}); .then(() => {});
} }
}); });
}) })
.catch(error => { .catch((error) => {
console.log('error', error); console.log("error", error);
}); });
}; };
@ -239,7 +345,6 @@
}; };
return { return {
submit, submit,
cancel, cancel,
formRef, formRef,
@ -253,12 +358,12 @@
logicStatusOptions, logicStatusOptions,
labelCol: { labelCol: {
span: 8 span: 8,
}, },
wrapperCol: { wrapperCol: {
span: 12 span: 12,
}, },
}; };
}, },
}); });
</script> </script>

View File

@ -1,53 +1,110 @@
<template> <template>
<a-modal :open="visible" title="新增区域出入口信息" cancelText="取消" okText="提交" @ok="submit" @cancel="cancel"> <a-modal
<a-form ref="formRef" :model="formState" :rules="formRules" :label-col="labelCol" :wrapper-col="wrapperCol"> :open="visible"
title="新增区域出入口信息"
cancelText="取消"
okText="提交"
@ok="submit"
@cancel="cancel"
>
<a-form
ref="formRef"
:model="formState"
:rules="formRules"
layout="vertical"
>
<a-row :gutter="[16, 0]">
<a-col :span="12">
<a-form-item ref="equipCode" label="设备号" name="equipCode"> <a-form-item ref="equipCode" label="设备号" name="equipCode">
<a-input v-model:value="formState.equipCode" placeholder="请输入设备号" /> <a-input
v-model:value="formState.equipCode"
placeholder="请输入设备号"
/>
</a-form-item> </a-form-item>
</a-col>
<a-col :span="12">
<a-form-item ref="sourceLoc" label="起始地址" name="sourceLoc"> <a-form-item ref="sourceLoc" label="起始地址" name="sourceLoc">
<a-input v-model:value="formState.sourceLoc" placeholder="请输入起始地址" /> <a-input
v-model:value="formState.sourceLoc"
placeholder="请输入起始地址"
/>
</a-form-item> </a-form-item>
</a-col>
<a-col :span="12">
<a-form-item ref="targetLoc" label="目标地址" name="targetLoc"> <a-form-item ref="targetLoc" label="目标地址" name="targetLoc">
<a-input v-model:value="formState.targetLoc" placeholder="请输入目标地址" /> <a-input
v-model:value="formState.targetLoc"
placeholder="请输入目标地址"
/>
</a-form-item> </a-form-item>
</a-col>
<a-col :span="12">
<a-form-item ref="equipType" label="设备类型" name="equipType"> <a-form-item ref="equipType" label="设备类型" name="equipType">
<a-select v-model:value="formState.equipType" :options="equipTypes" placeholder="请选择设备类型" /> <a-select
v-model:value="formState.equipType"
:options="equipTypes"
placeholder="请选择设备类型"
/>
</a-form-item> </a-form-item>
</a-col>
<a-col :span="12">
<a-form-item ref="exitDesc" label="路径描述" name="exitDesc"> <a-form-item ref="exitDesc" label="路径描述" name="exitDesc">
<a-input v-model:value="formState.exitDesc" placeholder="请输入路径描述" /> <a-input
v-model:value="formState.exitDesc"
placeholder="请输入路径描述"
/>
</a-form-item> </a-form-item>
</a-col>
<a-col :span="12">
<a-form-item ref="directFlag" label="方向标志" name="directFlag"> <a-form-item ref="directFlag" label="方向标志" name="directFlag">
<a-select v-model:value="formState.directFlag" :options="directFlags" placeholder="请选择方向标志" /> <a-select
v-model:value="formState.directFlag"
:options="directFlags"
placeholder="请选择方向标志"
/>
</a-form-item> </a-form-item>
</a-col>
<a-col :span="12">
<a-form-item ref="taskLimit" label="任务数限制" name="taskLimit"> <a-form-item ref="taskLimit" label="任务数限制" name="taskLimit">
<a-input-number v-model:value="formState.taskLimit" placeholder="请输入任务数限制" style="width: 100%;"/> <a-input-number
v-model:value="formState.taskLimit"
placeholder="请输入任务数限制"
style="width: 100%"
/>
</a-form-item> </a-form-item>
</a-col>
<a-col :span="12">
<a-form-item ref="equipStatus" label="设备状态" name="equipStatus"> <a-form-item ref="equipStatus" label="设备状态" name="equipStatus">
<a-select v-model:value="formState.equipStatus" :options="equipStatusOptions" placeholder="请选择设备状态" /> <a-select
v-model:value="formState.equipStatus"
:options="equipStatusOptions"
placeholder="请选择设备状态"
/>
</a-form-item> </a-form-item>
</a-col>
<a-col :span="12">
<a-form-item ref="logicStatus" label="逻辑状态" name="logicStatus"> <a-form-item ref="logicStatus" label="逻辑状态" name="logicStatus">
<a-select v-model:value="formState.logicStatus" :options="logicStatusOptions" placeholder="请选择逻辑状态" /> <a-select
v-model:value="formState.logicStatus"
:options="logicStatusOptions"
placeholder="请选择逻辑状态"
/>
</a-form-item> </a-form-item>
</a-col>
<a-col :span="24">
<a-form-item label="备注" name="remark"> <a-form-item label="备注" name="remark">
<a-textarea v-model:value="formState.remark" /> <a-textarea v-model:value="formState.remark" />
</a-form-item> </a-form-item>
</a-col>
</a-row>
</a-form> </a-form>
</a-modal> </a-modal>
</template> </template>
<script> <script>
import { import { message } from "@hwork/ant-design-vue";
message import { save } from "@/api/wms/locExit";
} from '@hwork/ant-design-vue'; import { defineComponent, reactive, ref, toRaw } from "vue";
import { export default defineComponent({
save
} from "@/api/wms/locExit";
import {
defineComponent,
reactive,
ref,
toRaw
} from "vue";
export default defineComponent({
props: { props: {
visible: { visible: {
type: Boolean, type: Boolean,
@ -55,119 +112,147 @@
}, },
emit: ["close"], emit: ["close"],
setup(props, context) { setup(props, context) {
const formRef = ref(); const formRef = ref();
const state = reactive({}); const state = reactive({});
const formState = reactive({}); const formState = reactive({});
const equipTypes = ref([{ const equipTypes = ref([
value: 'Stacker', {
label: '堆垛机', value: "Stacker",
}, { label: "堆垛机",
value: 'Station', },
label: '站台', {
}, { value: "Station",
value: 'Conveyer', label: "站台",
label: '小车', },
}, { {
value: 'Agv', value: "Conveyer",
label: 'AGV', label: "小车",
}]); },
{
value: "Agv",
label: "AGV",
},
]);
const directFlags = ref([{ const directFlags = ref([
value: 'In', {
label: '向里', value: "In",
}, { label: "向里",
value: 'Out', },
label: '向外', {
}, { value: "Out",
value: 'Move', label: "向外",
label: '移动', },
}]); {
value: "Move",
label: "移动",
},
]);
const equipStatusOptions = ref([{ const equipStatusOptions = ref([
value: 'true', {
label: '是', value: "true",
}, { label: "是",
value: 'false', },
label: '否', {
}]); value: "false",
label: "否",
},
]);
const logicStatusOptions = ref([{ const logicStatusOptions = ref([
value: 'true', {
label: '是', value: "true",
}, { label: "是",
value: 'false', },
label: '否', {
}]); value: "false",
label: "否",
},
]);
const formRules = { const formRules = {
equipCode: [{ equipCode: [
{
required: true, required: true,
message: '请输入设备号(必填)', message: "请输入设备号(必填)",
trigger: 'blur' trigger: "blur",
}], },
sourceLoc: [{ ],
sourceLoc: [
{
required: true, required: true,
message: '请输入起始地址(必填)', message: "请输入起始地址(必填)",
trigger: 'blur' trigger: "blur",
}], },
targetLoc: [{ ],
targetLoc: [
{
required: true, required: true,
message: '请输入目标地址(必填)', message: "请输入目标地址(必填)",
trigger: 'blur', trigger: "blur",
}], },
equipType: [{ ],
equipType: [
{
required: true, required: true,
message: '请选择设备类型(必选)', message: "请选择设备类型(必选)",
trigger: 'blur', trigger: "blur",
}], },
equipStatus: [{ ],
equipStatus: [
{
required: true, required: true,
message: '请选择设备状态(必选)', message: "请选择设备状态(必选)",
trigger: 'blur', trigger: "blur",
}], },
logicStatus: [{ ],
logicStatus: [
{
required: true, required: true,
message: '请选择逻辑状态(必选)', message: "请选择逻辑状态(必选)",
trigger: 'blur', trigger: "blur",
}], },
],
}; };
const saveKey = "save"; const saveKey = "save";
const submit = (e) => { const submit = (e) => {
message.loading({ message.loading({
content: '提交中...', content: "提交中...",
key: saveKey key: saveKey,
}); });
formRef.value formRef.value
.validate() .validate()
.then(() => { .then(() => {
save(toRaw(formState)).then((response) => { save(toRaw(formState)).then((response) => {
if (response.success) { if (response.success) {
message.success({ message
content: '保存成功', .success({
content: "保存成功",
key: saveKey, key: saveKey,
duration: 1 duration: 1,
}).then(() => { })
.then(() => {
cancel(); cancel();
}); });
} else { } else {
message.error({ message
.error({
content: response.msg, content: response.msg,
key: saveKey, key: saveKey,
duration: 1 duration: 1,
}).then(() => { })
}); .then(() => {});
} }
}); });
}) })
.catch(error => { .catch((error) => {
console.log('error', error); console.log("error", error);
}); });
}; };
@ -176,7 +261,6 @@
context.emit("close", false); context.emit("close", false);
}; };
return { return {
state, state,
submit, submit,
@ -191,12 +275,12 @@
logicStatusOptions, logicStatusOptions,
labelCol: { labelCol: {
span: 8 span: 8,
}, },
wrapperCol: { wrapperCol: {
span: 12 span: 12,
}, },
}; };
}, },
}); });
</script> </script>