bug修改

This commit is contained in:
yyy 2025-03-22 16:15:38 +08:00
parent 6944f35b79
commit ceb6bda6fe
10 changed files with 135 additions and 62 deletions

View File

@ -5,7 +5,7 @@ VITE_DEV=true
# 请求路径 # 请求路径
# VITE_BASE_URL='http://192.168.0.74:48080' # VITE_BASE_URL='http://192.168.0.74:48080'
# VITE_BASE_URL='http://192.168.0.189:48080' # VITE_BASE_URL='http://192.168.0.226:48080'
VITE_BASE_URL='http://192.168.0.45:48080' VITE_BASE_URL='http://192.168.0.45:48080'
# 文件上传类型server - 后端上传, client - 前端直连上传,仅支持 S3 服务 # 文件上传类型server - 后端上传, client - 前端直连上传,仅支持 S3 服务

View File

@ -1,8 +1,13 @@
<template> <template>
<Dialog v-model="dialogVisible" :title="title" width="545px" style="padding: 0;"> <Dialog v-model="dialogVisible" :title="title" width="545px" style="padding: 0">
<el-form :model="formData" label-width="auto" ref="formRef" :rules="formRules"> <el-form :model="formData" label-width="auto" ref="formRef" :rules="formRules">
<el-form-item label="车辆类型" prop="robotModelId" required> <el-form-item label="车辆类型" prop="robotModelId" required>
<el-select v-model="formData.robotModelId" placeholder="请选择车辆类型" required :disabled="formData.id"> <el-select
v-model="formData.robotModelId"
placeholder="请选择车辆类型"
required
:disabled="formData.id"
>
<el-option <el-option
:label="item.robotModelNumber" :label="item.robotModelNumber"
:value="item.id" :value="item.id"
@ -12,29 +17,48 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item required label="车辆编号" prop="robotNo"> <el-form-item required label="车辆编号" prop="robotNo">
<el-input v-model="formData.robotNo" :disabled="false" placeholder="请输入车辆编号"/> <el-input
v-model="formData.robotNo"
:disabled="false"
placeholder="请输入车辆编号"
maxlength="10"
show-word-limit
/>
</el-form-item> </el-form-item>
<el-form-item required label="车辆状态" v-if="formData.id"> <el-form-item required label="车辆状态" v-if="formData.id">
<el-select v-model="formData.robotTaskModel" placeholder="请选择车辆类型" required> <el-select v-model="formData.robotTaskModel" placeholder="请选择车辆类型" required>
<el-option <el-option :label="'锁定'" :value="0" />
:label="'锁定'" <el-option :label="'正常'" :value="1" />
:value="0"
/>
<el-option
:label="'正常'"
:value="1"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item required label="自动充电电量" prop="autoCharge"> <el-form-item required label="自动充电电量" prop="autoCharge">
<el-input-number style="width: 100px;" v-model="formData.autoCharge" :disabled="false" :controls="false" :precision="0" :step="1" type="number" :min="0" :max="99" placeholder="请输入自动充电电量"> <el-input-number
style="width: 100px"
v-model="formData.autoCharge"
:disabled="false"
:controls="false"
:precision="0"
:step="1"
type="number"
:min="0"
:max="99"
placeholder="请输入自动充电电量"
>
<template #append>%</template> <template #append>%</template>
</el-input-number> </el-input-number>
<span style="margin-left: 5px;">%</span> <span style="margin-left: 5px">%</span>
<span style="margin-left: 4px;color: #C60606;font-size: 12px;">建议自动充电电量大于30%</span> <span style="margin-left: 4px; color: #c60606; font-size: 12px"
>建议自动充电电量大于30%</span
>
</el-form-item> </el-form-item>
<el-form-item required label="Mac地址" prop="macAddress"> <el-form-item required label="Mac地址" prop="macAddress">
<el-input v-model="formData.macAddress" :disabled="false" placeholder="请输入Mac地址"/> <el-input
v-model="formData.macAddress"
:disabled="false"
placeholder="请输入Mac地址"
maxlength="25"
show-word-limit
/>
</el-form-item> </el-form-item>
<el-form-item required label="选择范围" placeholder="请选择范围"> <el-form-item required label="选择范围" placeholder="请选择范围">
<el-cascader <el-cascader
@ -49,7 +73,7 @@
</el-form> </el-form>
<template #footer> <template #footer>
<div style="padding: 0 10px 10px 0;"> <div style="padding: 0 10px 10px 0">
<el-button @click="dialogVisible = false"> </el-button> <el-button @click="dialogVisible = false"> </el-button>
<el-button :disabled="formLoading" type="primary" @click="submitForm"> </el-button> <el-button :disabled="formLoading" type="primary" @click="submitForm"> </el-button>
</div> </div>
@ -90,7 +114,9 @@ const getFloorArea = async () => {
let obj = { let obj = {
value: key, value: key,
label: key + '层', label: key + '层',
children: res[key].map(item => {return {label: item.area, value: item.id,...item,children: []}}) children: res[key].map((item) => {
return { label: item.area, value: item.id, ...item, children: [] }
})
} }
floor.push(obj) floor.push(obj)
} }
@ -101,7 +127,7 @@ const getFloorArea = async () => {
const floorAreaChange = (value) => { const floorAreaChange = (value) => {
console.log(value) console.log(value)
formData.value.floorAreaJson = [] formData.value.floorAreaJson = []
value.forEach(item => { value.forEach((item) => {
formData.value.floorAreaJson.push(item[1]) formData.value.floorAreaJson.push(item[1])
}) })
console.log(formData.value.floorAreaJson) console.log(formData.value.floorAreaJson)
@ -127,7 +153,7 @@ const open = async (type, id) => {
const data = await CarApi.getRobotInformation({ id }) const data = await CarApi.getRobotInformation({ id })
formData.value = data formData.value = data
if (data.positionMapList.length) { if (data.positionMapList.length) {
data.positionMapList.forEach(item => { data.positionMapList.forEach((item) => {
floorAreaJsonData.value.push([item.floor, item.id]) floorAreaJsonData.value.push([item.floor, item.id])
}) })
} }
@ -236,7 +262,6 @@ const resetForm = () => {
border-bottom: 1px solid #e8e8e8 !important; border-bottom: 1px solid #e8e8e8 !important;
} }
.task-tips { .task-tips {
display: flex; display: flex;
align-items: center; align-items: center;

View File

@ -205,6 +205,14 @@ const props = defineProps({
const ruleFormRef = ref() const ruleFormRef = ref()
const dialogFormVisible = ref(false) // const dialogFormVisible = ref(false) //
const validateNumberLength = (rule, value, callback) => {
if (value.toString().length > 25) {
callback(new Error('输入的数字长度不能超过25位'))
} else {
callback()
}
}
const rules = reactive({ const rules = reactive({
startPointX: [ startPointX: [
{ required: true, message: '请输入开始点位x轴坐标', trigger: 'blur' }, { required: true, message: '请输入开始点位x轴坐标', trigger: 'blur' },
@ -214,7 +222,8 @@ const rules = reactive({
max: Number(props.imgBgObj.width), max: Number(props.imgBgObj.width),
message: `不能超过地图宽度${props.imgBgObj.width}`, message: `不能超过地图宽度${props.imgBgObj.width}`,
trigger: 'blur' trigger: 'blur'
} },
{ validator: validateNumberLength, trigger: 'blur' }
], ],
startPointY: [ startPointY: [
{ required: true, message: '请输入开始点位y轴坐标', trigger: 'blur' }, { required: true, message: '请输入开始点位y轴坐标', trigger: 'blur' },
@ -224,7 +233,8 @@ const rules = reactive({
max: Number(props.imgBgObj.height), max: Number(props.imgBgObj.height),
message: `不能超过地图宽度${props.imgBgObj.height}`, message: `不能超过地图宽度${props.imgBgObj.height}`,
trigger: 'blur' trigger: 'blur'
} },
{ validator: validateNumberLength, trigger: 'blur' }
], ],
endPointX: [ endPointX: [
{ required: true, message: '请输入结束点位x轴坐标', trigger: 'blur' }, { required: true, message: '请输入结束点位x轴坐标', trigger: 'blur' },
@ -234,7 +244,8 @@ const rules = reactive({
max: Number(props.imgBgObj.width), max: Number(props.imgBgObj.width),
message: `不能超过地图宽度${props.imgBgObj.width}`, message: `不能超过地图宽度${props.imgBgObj.width}`,
trigger: 'blur' trigger: 'blur'
} },
{ validator: validateNumberLength, trigger: 'blur' }
], ],
endPointY: [ endPointY: [
{ required: true, message: '请输入结束点位y轴坐标', trigger: 'blur' }, { required: true, message: '请输入结束点位y轴坐标', trigger: 'blur' },
@ -244,7 +255,8 @@ const rules = reactive({
max: Number(props.imgBgObj.height), max: Number(props.imgBgObj.height),
message: `不能超过地图宽度${props.imgBgObj.height}`, message: `不能超过地图宽度${props.imgBgObj.height}`,
trigger: 'blur' trigger: 'blur'
} },
{ validator: validateNumberLength, trigger: 'blur' }
], ],
expansionZoneFront: [{ required: true, message: '请输入膨胀区域前', trigger: 'blur' }], expansionZoneFront: [{ required: true, message: '请输入膨胀区域前', trigger: 'blur' }],
expansionZoneAfter: [{ required: true, message: '请输入膨胀区域后', trigger: 'blur' }], expansionZoneAfter: [{ required: true, message: '请输入膨胀区域后', trigger: 'blur' }],

View File

@ -206,6 +206,14 @@ watch(
{ immediate: true } { immediate: true }
) )
const validateNumberLength = (rule, value, callback) => {
if (value.toString().length > 25) {
callback(new Error('输入的数字长度不能超过25位'))
} else {
callback()
}
}
const rules = reactive({ const rules = reactive({
locationX: [ locationX: [
{ required: true, message: '请输入X', trigger: 'blur' }, { required: true, message: '请输入X', trigger: 'blur' },
@ -215,7 +223,8 @@ const rules = reactive({
max: Number(props.imgBgObj.width), max: Number(props.imgBgObj.width),
message: `不能超过地图宽度${props.imgBgObj.width}`, message: `不能超过地图宽度${props.imgBgObj.width}`,
trigger: 'blur' trigger: 'blur'
} },
{ validator: validateNumberLength, trigger: 'blur' }
], ],
locationY: [ locationY: [
{ required: true, message: '请输入Y', trigger: 'blur' }, { required: true, message: '请输入Y', trigger: 'blur' },
@ -225,7 +234,8 @@ const rules = reactive({
max: Number(props.imgBgObj.height), max: Number(props.imgBgObj.height),
message: `不能超过地图长度${props.imgBgObj.height}`, message: `不能超过地图长度${props.imgBgObj.height}`,
trigger: 'blur' trigger: 'blur'
} },
{ validator: validateNumberLength, trigger: 'blur' }
], ],
locationYaw: [{ required: true, message: '请输入弧度', trigger: 'blur' }], locationYaw: [{ required: true, message: '请输入弧度', trigger: 'blur' }],
type: [{ required: true, message: '请选择类型', trigger: 'blur' }], type: [{ required: true, message: '请选择类型', trigger: 'blur' }],
@ -310,6 +320,7 @@ const submit = async (formEl) => {
form.value.dataObj.outDirection = form.value.outDirection form.value.dataObj.outDirection = form.value.outDirection
form.value.dataObj.id = form.value.deviceId form.value.dataObj.id = form.value.deviceId
form.value.dataObj.deviceType = deviceInfo.value.deviceType form.value.dataObj.deviceType = deviceInfo.value.deviceType
form.value.dataObj.deviceNo = deviceInfo.value.deviceNo
form.value.dataObj.mapImageUrl = deviceInfo.value.mapImageUrl form.value.dataObj.mapImageUrl = deviceInfo.value.mapImageUrl
form.value.mapImageUrl = deviceInfo.value.mapImageUrl form.value.mapImageUrl = deviceInfo.value.mapImageUrl
//dataJson //dataJson
@ -340,6 +351,9 @@ const open = (item, list) => {
form.value.layersNumber = item.dataList?.length || '' form.value.layersNumber = item.dataList?.length || ''
form.value.deviceId = item?.deviceId || item?.dataObj?.id || '' form.value.deviceId = item?.deviceId || item?.dataObj?.id || ''
form.value.positionMapId = props.positionMapId form.value.positionMapId = props.positionMapId
deviceInfo.value.deviceNo = item?.deviceNo || item?.dataObj?.deviceNo || ''
deviceInfo.value.mapImageUrl = item?.mapImageUrl || item?.dataObj?.mapImageUrl || ''
equipmentList.value = list equipmentList.value = list
if (item?.dataObj?.deviceType) { if (item?.dataObj?.deviceType) {
deviceInfo.value.deviceType = item.dataObj.deviceType || '' deviceInfo.value.deviceType = item.dataObj.deviceType || ''
@ -422,6 +436,7 @@ const deviceChange = (deviceId) => {
deviceList.value.forEach((item) => { deviceList.value.forEach((item) => {
if (item.id == deviceId) { if (item.id == deviceId) {
deviceInfo.value.mapImageUrl = item.mapImageUrl deviceInfo.value.mapImageUrl = item.mapImageUrl
deviceInfo.value.deviceNo = item.deviceNo
} }
}) })
} }
@ -436,7 +451,8 @@ const directionChange = (e) => {
const deviceInfo = ref({ const deviceInfo = ref({
positionMapId: '', positionMapId: '',
deviceType: '', deviceType: '',
mapImageUrl: '' mapImageUrl: '',
deviceNo: ''
}) })
// //
const deviceList = ref([]) const deviceList = ref([])

View File

@ -13,8 +13,8 @@
v-loading="loading" v-loading="loading"
> >
<el-table-column type="index" label="序号" width="80" align="center" /> <el-table-column type="index" label="序号" width="80" align="center" />
<el-table-column prop="skuInfo" label="物料区域名称" align="center" /> <el-table-column prop="areaName" label="物料区域名称" align="center" />
<el-table-column prop="areaName" label="物料名称" align="center" /> <el-table-column prop="skuInfo" label="物料名称" align="center" />
<el-table-column label="操作" align="center" width="140"> <el-table-column label="操作" align="center" width="140">
<template #default="scope"> <template #default="scope">
<el-button size="small" type="primary" @click="handleEdit(scope.row)"> 编辑 </el-button> <el-button size="small" type="primary" @click="handleEdit(scope.row)"> 编辑 </el-button>
@ -38,12 +38,12 @@
<el-dialog v-model="editDialogFormVisible" title="编辑" width="400"> <el-dialog v-model="editDialogFormVisible" title="编辑" width="400">
<el-form :model="editForm" label-width="110" :rules="editRules" ref="editFormEl"> <el-form :model="editForm" label-width="110" :rules="editRules" ref="editFormEl">
<el-form-item label="物料区域名称" prop="skuInfo" required> <el-form-item label="物料区域名称" prop="areaName" required>
<el-input v-model="editForm.skuInfo" />
</el-form-item>
<el-form-item label="物料名称" prop="areaName" required>
<el-input v-model="editForm.areaName" /> <el-input v-model="editForm.areaName" />
</el-form-item> </el-form-item>
<el-form-item label="物料名称" prop="skuInfo" required>
<el-input v-model="editForm.skuInfo" />
</el-form-item>
</el-form> </el-form>
<template #footer> <template #footer>
<div class="dialog-footer"> <div class="dialog-footer">

View File

@ -8,11 +8,11 @@
@close="dialogClose" @close="dialogClose"
> >
<el-form :model="form" label-width="110" ref="ruleFormRef" :rules="rules"> <el-form :model="form" label-width="110" ref="ruleFormRef" :rules="rules">
<el-form-item label="物料区域名称" prop="skuInfo" required> <el-form-item label="物料区域名称" prop="areaName" required>
<el-input v-model="form.skuInfo" placeholder="请输入物料区域名称" /> <el-input v-model="form.areaName" placeholder="请输入物料区域名称" />
</el-form-item> </el-form-item>
<el-form-item label="物料名称" prop="areaName" required> <el-form-item label="物料名称" prop="skuInfo" required>
<el-input v-model="form.areaName" placeholder="请输入物料名称" /> <el-input v-model="form.skuInfo" placeholder="请输入物料名称" />
</el-form-item> </el-form-item>
<el-form-item label="库位数量" prop="areaNumber"> <el-form-item label="库位数量" prop="areaNumber">
<el-input v-model="form.areaNumber" :disabled="true" /> <el-input v-model="form.areaNumber" :disabled="true" />

View File

@ -94,9 +94,6 @@
/></el-icon> /></el-icon>
</div> </div>
</el-form-item> </el-form-item>
<el-form-item label="物料信息" prop="skuInfo">
<el-input v-model="formData.skuInfo" placeholder="请输入物料信息" />
</el-form-item>
<el-form-item label="指定车辆" prop="robotNo"> <el-form-item label="指定车辆" prop="robotNo">
<el-select v-model="formData.robotNo" placeholder="请选择车辆"> <el-select v-model="formData.robotNo" placeholder="请选择车辆">
<el-option <el-option
@ -116,12 +113,22 @@
class="!w-220px" class="!w-220px"
/> />
</el-form-item> </el-form-item>
<el-form-item label="物料信息" prop="skuInfo">
<el-input
v-model="formData.skuInfo"
placeholder="请输入物料信息"
maxlength="100"
show-word-limit
/>
</el-form-item>
<el-form-item label="其他信息" prop="otherMsg"> <el-form-item label="其他信息" prop="otherMsg">
<el-input <el-input
v-model="formData.otherMsg" v-model="formData.otherMsg"
rows="3" rows="3"
type="textarea" type="textarea"
placeholder="请输入其他信息" placeholder="请输入其他信息"
maxlength="100"
show-word-limit
/> />
</el-form-item> </el-form-item>
<!-- <div class="task-tips"> <!-- <div class="task-tips">

View File

@ -2533,6 +2533,7 @@ const getAllNodeList = async () => {
item.locationDeep = item.dataObj.locationDeep item.locationDeep = item.dataObj.locationDeep
item.locationWide = item.dataObj.locationWide item.locationWide = item.dataObj.locationWide
item.deviceId = item.dataObj.id item.deviceId = item.dataObj.id
item.deviceNo = item.dataObj.deviceNo
item.mapImageUrl = item.dataObj.mapImageUrl item.mapImageUrl = item.dataObj.mapImageUrl
item.draggable = true item.draggable = true
item.resizable = true item.resizable = true

View File

@ -102,7 +102,12 @@
<el-row :gutter="24"> <el-row :gutter="24">
<el-col :span="12"> <el-col :span="12">
<el-form-item label="物料信息" prop="skuInfo" label-width="146"> <el-form-item label="物料信息" prop="skuInfo" label-width="146">
<el-input v-model="formData.skuInfo" placeholder="请输入物料信息" /> <el-input
v-model="formData.skuInfo"
placeholder="请输入物料信息"
maxlength="100"
show-word-limit
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
@ -123,8 +128,10 @@
<el-input <el-input
v-model="formData.otherMsg" v-model="formData.otherMsg"
placeholder="请输入其他信息" placeholder="请输入其他信息"
:rows="2" maxlength="100"
show-word-limit
type="textarea" type="textarea"
rows="3"
/> />
</el-form-item> </el-form-item>
</el-col> </el-col>

View File

@ -8,7 +8,12 @@
label-width="80px" label-width="80px"
> >
<el-form-item label="公告标题" prop="title"> <el-form-item label="公告标题" prop="title">
<el-input v-model="formData.title" placeholder="请输入公告标题" /> <el-input
v-model="formData.title"
placeholder="请输入公告标题"
maxlength="50"
show-word-limit
/>
</el-form-item> </el-form-item>
<el-form-item label="公告内容" prop="content"> <el-form-item label="公告内容" prop="content">
<Editor v-model="formData.content" height="150px" /> <Editor v-model="formData.content" height="150px" />