在库位管理中新增容量单位类型和容量单位字段,调整库位状态选项,在仓库和库区管理中新增必填字段验证,移除库区容量列显示
This commit is contained in:
@@ -20,6 +20,9 @@ export interface LocationData {
|
||||
warehouseId?: string;
|
||||
zoneId: string;
|
||||
maxCapacity?: number;
|
||||
capacityUnit?: string;
|
||||
capacityUnitType: string;
|
||||
status?: string;
|
||||
remark?: string;
|
||||
}
|
||||
|
||||
@@ -76,3 +79,11 @@ export function updateLocationStatus(data: { id: string; status: string }) {
|
||||
data,
|
||||
});
|
||||
}
|
||||
|
||||
// 获取容量单位类型
|
||||
export function getCapacityUnitType() {
|
||||
return newService({
|
||||
url: '/assets/location/getCapacityUnitType',
|
||||
method: 'get',
|
||||
});
|
||||
}
|
||||
|
||||
@@ -51,12 +51,26 @@
|
||||
<el-select v-model="ruleForm.status" placeholder="请选择状态" clearable style="width: 100%">
|
||||
<el-option label="空闲" value="idle" />
|
||||
<el-option label="占用" value="occupied" />
|
||||
<el-option label="锁定" value="locked" />
|
||||
<el-option label="维护" value="maintenance" />
|
||||
<el-option label="禁用" value="disable" />
|
||||
<el-option label="预留" value="reserved" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="单位类型" prop="capacityUnitType">
|
||||
<el-select v-model="ruleForm.capacityUnitType" placeholder="请选择单位类型" clearable style="width: 100%">
|
||||
<el-option v-for="item in capacityUnitTypeOptions" :key="item.value" :label="item.label" :value="item.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="容量单位" prop="capacityUnit">
|
||||
<el-input v-model="ruleForm.capacityUnit" placeholder="请输入容量单位" clearable />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="最大容量" prop="maxCapacity">
|
||||
@@ -91,7 +105,7 @@ export default {
|
||||
import { ref, reactive, computed } from 'vue';
|
||||
import { ElMessage } from 'element-plus';
|
||||
import type { FormInstance, FormRules } from 'element-plus';
|
||||
import { createLocation, updateLocation, getLocation } from '/@/api/assets/location';
|
||||
import { createLocation, updateLocation, getLocation, getCapacityUnitType } from '/@/api/assets/location';
|
||||
|
||||
// 定义props
|
||||
const props = defineProps<{
|
||||
@@ -110,6 +124,9 @@ const isShowDialog = ref(false);
|
||||
const isEdit = ref(false);
|
||||
const submitLoading = ref(false);
|
||||
|
||||
// 容量单位类型选项
|
||||
const capacityUnitTypeOptions = ref<{ label: string; value: string }[]>([]);
|
||||
|
||||
// 表单数据
|
||||
const ruleForm = reactive({
|
||||
id: '',
|
||||
@@ -119,6 +136,8 @@ const ruleForm = reactive({
|
||||
warehouseId: '',
|
||||
zoneId: '',
|
||||
status: 'idle',
|
||||
capacityUnitType: '',
|
||||
capacityUnit: '',
|
||||
maxCapacity: 0,
|
||||
remark: '',
|
||||
});
|
||||
@@ -140,6 +159,7 @@ const onWarehouseChange = () => {
|
||||
const rules = reactive<FormRules>({
|
||||
locationName: [{ required: true, message: '请输入库位名称', trigger: 'blur' }],
|
||||
zoneId: [{ required: true, message: '请选择所属库区', trigger: 'change' }],
|
||||
capacityUnitType: [{ required: true, message: '请选择容量单位类型', trigger: 'change' }],
|
||||
});
|
||||
|
||||
// 重置表单
|
||||
@@ -151,15 +171,35 @@ const resetForm = () => {
|
||||
ruleForm.warehouseId = '';
|
||||
ruleForm.zoneId = '';
|
||||
ruleForm.status = 'idle';
|
||||
ruleForm.capacityUnitType = '';
|
||||
ruleForm.capacityUnit = '';
|
||||
ruleForm.maxCapacity = 0;
|
||||
ruleForm.remark = '';
|
||||
};
|
||||
|
||||
// 加载容量单位类型选项
|
||||
const loadCapacityUnitTypeOptions = async () => {
|
||||
try {
|
||||
const res: any = await getCapacityUnitType();
|
||||
if (res.data?.options && Array.isArray(res.data.options)) {
|
||||
capacityUnitTypeOptions.value = res.data.options.map((item: any) => ({
|
||||
label: item.value,
|
||||
value: item.key,
|
||||
}));
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('获取容量单位类型失败:', error);
|
||||
}
|
||||
};
|
||||
|
||||
// 打开弹窗
|
||||
const openDialog = async (row?: any) => {
|
||||
resetForm();
|
||||
isEdit.value = !!row;
|
||||
|
||||
// 加载容量单位类型选项
|
||||
await loadCapacityUnitTypeOptions();
|
||||
|
||||
if (row) {
|
||||
try {
|
||||
const res: any = await getLocation(row.id);
|
||||
@@ -171,6 +211,8 @@ const openDialog = async (row?: any) => {
|
||||
ruleForm.warehouseId = data.warehouseId || '';
|
||||
ruleForm.zoneId = data.zoneId || '';
|
||||
ruleForm.status = data.status || 'idle';
|
||||
ruleForm.capacityUnitType = data.capacityUnitType || '';
|
||||
ruleForm.capacityUnit = data.capacityUnit || '';
|
||||
ruleForm.maxCapacity = data.maxCapacity || 0;
|
||||
ruleForm.remark = data.remark || '';
|
||||
} catch (error) {
|
||||
@@ -204,6 +246,8 @@ const onSubmit = async () => {
|
||||
warehouseId: ruleForm.warehouseId,
|
||||
zoneId: ruleForm.zoneId,
|
||||
status: ruleForm.status,
|
||||
capacityUnitType: ruleForm.capacityUnitType,
|
||||
capacityUnit: ruleForm.capacityUnit,
|
||||
maxCapacity: ruleForm.maxCapacity,
|
||||
remark: ruleForm.remark,
|
||||
};
|
||||
|
||||
@@ -21,8 +21,8 @@
|
||||
<el-select size="default" v-model="tableData.param.status" placeholder="请选择状态" clearable style="width: 120px">
|
||||
<el-option label="空闲" value="idle" />
|
||||
<el-option label="占用" value="occupied" />
|
||||
<el-option label="锁定" value="locked" />
|
||||
<el-option label="维护" value="maintenance" />
|
||||
<el-option label="禁用" value="disable" />
|
||||
<el-option label="预留" value="reserved" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
@@ -205,9 +205,9 @@ const getStatusTagType = (status: string) => {
|
||||
return 'success';
|
||||
case 'occupied':
|
||||
return 'warning';
|
||||
case 'locked':
|
||||
case 'disable':
|
||||
return 'danger';
|
||||
case 'maintenance':
|
||||
case 'reserved':
|
||||
return 'info';
|
||||
default:
|
||||
return 'info';
|
||||
@@ -221,10 +221,10 @@ const getStatusText = (status: string) => {
|
||||
return '空闲';
|
||||
case 'occupied':
|
||||
return '占用';
|
||||
case 'locked':
|
||||
return '锁定';
|
||||
case 'maintenance':
|
||||
return '维护';
|
||||
case 'disable':
|
||||
return '禁用';
|
||||
case 'reserved':
|
||||
return '预留';
|
||||
default:
|
||||
return status;
|
||||
}
|
||||
|
||||
@@ -107,6 +107,7 @@ const validatePhone = (rule: any, value: string, callback: any) => {
|
||||
// 表单验证规则
|
||||
const rules = reactive<FormRules>({
|
||||
warehouseName: [{ required: true, message: '请输入仓库名称', trigger: 'blur' }],
|
||||
warehouseCode: [{ required: true, message: '请输入仓库编码', trigger: 'blur' }],
|
||||
contactPhone: [{ validator: validatePhone, trigger: 'blur' }],
|
||||
});
|
||||
|
||||
|
||||
@@ -98,6 +98,8 @@ const ruleForm = reactive({
|
||||
const rules = reactive<FormRules>({
|
||||
zoneName: [{ required: true, message: '请输入库区名称', trigger: 'blur' }],
|
||||
warehouseId: [{ required: true, message: '请选择所属仓库', trigger: 'change' }],
|
||||
zoneCode: [{ required: true, message: '库区编码', trigger: 'blur' }],
|
||||
zoneType: [{ required: true, message: '库区类型', trigger: 'change' }],
|
||||
});
|
||||
|
||||
// 重置表单
|
||||
|
||||
@@ -40,7 +40,6 @@
|
||||
<el-table-column prop="zoneCode" label="库区编码" width="120" show-overflow-tooltip />
|
||||
<el-table-column prop="zoneType" label="库区类型" width="100" show-overflow-tooltip />
|
||||
<el-table-column prop="warehouseName" label="所属仓库" width="150" show-overflow-tooltip />
|
||||
<el-table-column prop="capacity" label="容量" width="100" align="center" />
|
||||
<el-table-column prop="status" label="状态" width="80" align="center">
|
||||
<template #default="scope">
|
||||
<el-switch
|
||||
@@ -216,8 +215,8 @@ const onCurrentChange = (page: number) => {
|
||||
};
|
||||
|
||||
// 页面加载时获取数据
|
||||
onMounted(() => {
|
||||
getWarehouseOptions();
|
||||
onMounted(async () => {
|
||||
await getWarehouseOptions();
|
||||
getZoneList();
|
||||
});
|
||||
</script>
|
||||
|
||||
Reference in New Issue
Block a user