库位长度限制

This commit is contained in:
yyy 2025-03-21 14:50:38 +08:00
parent c8dad5805e
commit 9eae5d289a
3 changed files with 131 additions and 33 deletions

View File

@ -7,7 +7,7 @@
class="map-edit-route-dialog"
@close="dialogClose"
>
<el-form :model="form" label-width="120" ref="ruleFormRef">
<el-form :model="form" label-width="120" ref="ruleFormRef" :rules="rules">
<el-row :gutter="30">
<el-col :span="12">
<el-form-item label="开始点位x轴" prop="startPointX" required>
@ -15,7 +15,6 @@
style="width: 100%"
v-model="form.startPointX"
:min="0"
:max="imgBgObj.width"
placeholder="请输入开始点位x轴"
controls-position="right"
/>
@ -27,7 +26,6 @@
style="width: 100%"
v-model="form.startPointY"
:min="0"
:max="imgBgObj.height"
placeholder="请输入开始点位y轴"
controls-position="right"
/>
@ -41,7 +39,6 @@
style="width: 100%"
v-model="form.endPointX"
:min="0"
:max="imgBgObj.width"
placeholder="请输入结束点位x轴"
controls-position="right"
/>
@ -53,7 +50,6 @@
style="width: 100%"
v-model="form.endPointY"
:min="0"
:max="imgBgObj.height"
placeholder="请输入结束点位y轴"
controls-position="right"
/>
@ -210,8 +206,50 @@ const ruleFormRef = ref()
const dialogFormVisible = ref(false) //
const rules = reactive({
skuInfo: [{ required: true, message: '请输入物料区域名称', trigger: 'blur' }],
areaName: [{ required: true, message: '请输入物料名称', trigger: 'blur' }]
startPointX: [
{ required: true, message: '请输入开始点位x轴坐标', trigger: 'blur' },
{
type: 'number',
min: 0,
max: Number(props.imgBgObj.width),
message: `不能超过地图宽度${props.imgBgObj.width}`,
trigger: 'blur'
}
],
startPointY: [
{ required: true, message: '请输入开始点位y轴坐标', trigger: 'blur' },
{
type: 'number',
min: 0,
max: Number(props.imgBgObj.height),
message: `不能超过地图宽度${props.imgBgObj.height}`,
trigger: 'blur'
}
],
endPointX: [
{ required: true, message: '请输入结束点位x轴坐标', trigger: 'blur' },
{
type: 'number',
min: 0,
max: Number(props.imgBgObj.width),
message: `不能超过地图宽度${props.imgBgObj.width}`,
trigger: 'blur'
}
],
endPointY: [
{ required: true, message: '请输入结束点位y轴坐标', trigger: 'blur' },
{
type: 'number',
min: 0,
max: Number(props.imgBgObj.height),
message: `不能超过地图宽度${props.imgBgObj.height}`,
trigger: 'blur'
}
],
expansionZoneFront: [{ required: true, message: '请输入膨胀区域前', trigger: 'blur' }],
expansionZoneAfter: [{ required: true, message: '请输入膨胀区域后', trigger: 'blur' }],
expansionZoneLeft: [{ required: true, message: '请输入膨胀区域左', trigger: 'blur' }],
expansionZoneRight: [{ required: true, message: '请输入膨胀区域右', trigger: 'blur' }]
})
//

View File

@ -12,7 +12,6 @@
style="width: 100%"
v-model="form.locationX"
:min="0"
:max="imgBgObj.width"
placeholder="请输入"
controls-position="right"
/>
@ -22,21 +21,10 @@
style="width: 100%"
v-model="form.locationY"
:min="0"
:max="imgBgObj.height"
placeholder="请输入"
controls-position="right"
/>
</el-form-item>
<el-form-item label="弧度" prop="locationYaw" required>
<el-input-number
style="width: 100%"
v-model="form.locationYaw"
:min="0"
placeholder="请输入"
controls-position="right"
:precision="2"
/>
</el-form-item>
<el-form-item label="类型" prop="type" required>
<el-select v-model="form.type" placeholder="请选择类型" @change="typeChange">
<el-option label="路径点位" :value="1" />
@ -47,10 +35,21 @@
<el-option label="等待点" :value="6" />
</el-select>
</el-form-item>
<el-form-item label="弧度" prop="locationYaw" required>
<el-input-number
class="!w-200px"
v-model="form.locationYaw"
:min="0"
:max="10000"
placeholder="请输入"
:precision="2"
/>
</el-form-item>
<div v-if="form.type === 2 || form.type === 3 || form.type === 4">
<el-form-item label="层数" prop="layersNumber" required v-if="form.type === 2">
<el-input-number
class="!w-200px"
v-model="form.layersNumber"
:min="1"
:max="4"
@ -61,7 +60,7 @@
<el-text class="mx-1">最大层数4</el-text>
</el-form-item>
<el-form-item label="排序" prop="locationNumber" v-if="form.type === 2" required>
<el-input-number v-model="form.locationNumber" :min="1" :max="10000000" />
<el-input-number class="!w-200px" v-model="form.locationNumber" :min="1" />
<el-text class="mx-1">最大值10000000</el-text>
</el-form-item>
<el-form-item label="编号" prop="deviceId" required v-if="form.type === 3">
@ -100,10 +99,10 @@
<el-form-item label="库位长度" prop="locationDeep" required>
<div style="display: flex">
<el-input-number
class="!w-200px"
placeholder="请输入"
v-model="form.locationDeep"
:min="10"
:max="imgBgObj.height"
/>
<span class="ml-2">cm</span>
</div>
@ -111,10 +110,10 @@
<el-form-item label="库位宽度" prop="locationWide" required>
<div style="display: flex">
<el-input-number
class="!w-200px"
placeholder="请输入"
v-model="form.locationWide"
:min="10"
:max="imgBgObj.width"
/>
<span class="ml-2">cm</span>
</div>
@ -195,16 +194,73 @@ const form = ref({
locationYaw: undefined //
})
const mapWidthCm = ref(0)
const mapHeightCm = ref(0)
watch(
() => props.imgBgObj,
(val) => {
mapWidthCm.value = (Number(val.width) * Number(val.resolution) * 100).toFixed(2)
mapHeightCm.value = (Number(val.height) * Number(val.resolution) * 100).toFixed(2)
},
{ immediate: true }
)
const rules = reactive({
locationX: [{ required: true, message: '请输入X', trigger: 'blur' }],
locationY: [{ required: true, message: '请输入Y', trigger: 'blur' }],
locationX: [
{ required: true, message: '请输入X', trigger: 'blur' },
{
type: 'number',
min: 0,
max: Number(props.imgBgObj.width),
message: `不能超过地图宽度${props.imgBgObj.width}`,
trigger: 'blur'
}
],
locationY: [
{ required: true, message: '请输入Y', trigger: 'blur' },
{
type: 'number',
min: 0,
max: Number(props.imgBgObj.height),
message: `不能超过地图长度${props.imgBgObj.height}`,
trigger: 'blur'
}
],
locationYaw: [{ required: true, message: '请输入弧度', trigger: 'blur' }],
type: [{ required: true, message: '请选择类型', trigger: 'blur' }],
layersNumber: [{ required: true, message: '请输入层数', trigger: 'blur' }],
locationNumber: [{ required: true, message: '请输入排序', trigger: 'blur' }],
locationNumber: [
{ required: true, message: '请输入排序', trigger: 'blur' },
{
type: 'number',
min: 0,
max: 10000000,
message: `不能超过10000000`,
trigger: 'blur'
}
],
deviceId: [{ required: true, message: '请选择设备编号', trigger: 'blur' }],
locationDeep: [{ required: true, message: '请选择库位长度', trigger: 'blur' }],
locationWide: [{ required: true, message: '请选择库位宽度', trigger: 'blur' }]
locationDeep: [
{ required: true, message: '请选择库位长度', trigger: 'blur' },
{
type: 'number',
min: 0,
max: Number(mapWidthCm.value),
message: `不能超过${Number(mapWidthCm.value)}cm`,
trigger: 'blur'
}
],
locationWide: [
{ required: true, message: '请选择库位宽度', trigger: 'blur' },
{
type: 'number',
min: 0,
max: Number(mapHeightCm.value),
message: `不能超过${Number(mapHeightCm.value)}cm`,
trigger: 'blur'
}
]
})
const emit = defineEmits(['submitNodeSuccess', 'addEventListener'])
@ -280,7 +336,6 @@ const dialogClose = () => {
const equipmentList = ref([]) //
const open = (item, list) => {
console.log(item)
form.value = item
form.value.layersNumber = item.dataList?.length || ''
form.value.deviceId = item?.deviceId || item?.dataObj?.id || ''

View File

@ -315,7 +315,7 @@
>
<VueDragResizeRotate
v-for="(item, index) in state.allMapPointInfo"
:key="index"
:key="index + Number(item.locationX)"
:parent="true"
:x="Number(item.locationX) - Number(item.locationWidePx) / 2"
:y="Number(item.locationY) - Number(item.locationDeepPx) / 2"
@ -642,6 +642,7 @@
<!-- 节点编辑 -->
<editNodeProperties
v-if="imgBgObj.positionMapId"
ref="editNodePropertiesRef"
:positionMapId="imgBgObj.positionMapId"
:imgBgObj="imgBgObj"
@ -681,6 +682,7 @@
/>
<!-- 编辑地图路线 -->
<editMapRouteDialog
v-if="imgBgObj.positionMapId"
ref="editMapRouteDialogRef"
@editMapRouteDialogSubmit="editMapRouteDialogSubmit"
@addEventListener="addEventListener"
@ -1101,7 +1103,7 @@ const state = reactive({
switchType: 'tools',
name: '工具',
icon: 'ep:briefcase',
isActive: true
isActive: false
},
{
switchType: 'lineLibrary',
@ -1149,7 +1151,7 @@ const state = reactive({
switchType: 'grid',
name: '网格',
icon: 'ep:grid',
isActive: true
isActive: false
},
{
switchType: 'larger',
@ -1214,8 +1216,8 @@ const state = reactive({
isActive: false
}
],
isShowToolbar: true, //
isShowGrid: true, //
isShowToolbar: false, //
isShowGrid: false, //
moveForm: {
locationX: 0,
locationY: 0
@ -1412,6 +1414,9 @@ const toolbarClick = async (item) => {
state.currentDragTarget.index = null
}
addEditHistory()
setTimeout(() => {
toolbarSwitchType.value = ''
}, 200)
break
case 'tools':
//