优化仓库、库区和库位管理功能的状态处理逻辑,统一状态值命名规范将enabled/disabled改为enable/disable,修改updateWarehouseStatus、updateZoneStatus和updateLocationStatus接口参数类型将id从数组改为字符串,在库位管理中将状态开关改为标签展示并新增状态选择功能支持空闲/占用/锁定/维护四种状态,在编辑表单中添加状态选择项,同时在开发环境配置文件中添加备用开发地址注释

This commit is contained in:
WUSIJIAN
2026-01-30 11:02:12 +08:00
parent 5864db37d8
commit 8901bf1bb9
8 changed files with 67 additions and 38 deletions

View File

@@ -19,8 +19,10 @@
</el-form-item>
<el-form-item label="状态">
<el-select size="default" v-model="tableData.param.status" placeholder="请选择状态" clearable style="width: 120px">
<el-option label="启用" value="enabled" />
<el-option label="用" value="disabled" />
<el-option label="空闲" value="idle" />
<el-option label="用" value="occupied" />
<el-option label="锁定" value="locked" />
<el-option label="维护" value="maintenance" />
</el-select>
</el-form-item>
<el-form-item>
@@ -47,15 +49,9 @@
<el-table-column prop="warehouseName" label="所属仓库" width="150" show-overflow-tooltip />
<el-table-column prop="zoneName" label="所属库区" width="150" show-overflow-tooltip />
<el-table-column prop="maxCapacity" label="最大容量" width="100" align="center" />
<el-table-column prop="status" label="状态" width="80" align="center">
<el-table-column prop="status" label="状态" width="100" align="center">
<template #default="scope">
<el-switch
v-model="scope.row.statusEnabled"
inline-prompt
active-text=""
inactive-text=""
@change="onStatusChange(scope.row)"
/>
<el-tag :type="getStatusTagType(scope.row.status)">{{ getStatusText(scope.row.status) }}</el-tag>
</template>
</el-table-column>
<el-table-column prop="createdAt" label="创建时间" width="170" show-overflow-tooltip />
@@ -96,7 +92,7 @@ export default {
<script setup lang="ts">
import { ref, reactive, computed, onMounted } from 'vue';
import { ElMessage, ElMessageBox } from 'element-plus';
import { listLocations, deleteLocation, updateLocationStatus } from '/@/api/assets/location';
import { listLocations, deleteLocation } from '/@/api/assets/location';
import { listWarehouses } from '/@/api/assets/warehouse';
import { listZones } from '/@/api/assets/zone';
import EditLocation from './component/editLocation.vue';
@@ -173,8 +169,7 @@ const getLocationList = async () => {
...item,
warehouseName: item.warehouseName || warehouseMap.get(item.warehouseId) || '',
zoneName: item.zoneName || zoneMap.get(item.zoneId) || '',
statusEnabled: item.status === 'enabled',
}));
}));
tableData.total = res.data?.total || 0;
} catch (error) {
console.error('获取库位列表失败:', error);
@@ -203,17 +198,35 @@ const onEdit = (row: any) => {
editLocationRef.value.openDialog(row);
};
// 状态切换
const onStatusChange = async (row: any) => {
const newStatus = row.statusEnabled ? 'enabled' : 'disabled';
const statusText = row.statusEnabled ? '启用' : '禁用';
try {
await updateLocationStatus({ id: [row.id], status: newStatus });
ElMessage.success(`${statusText}成功`);
} catch (error) {
console.error('状态更新失败:', error);
// 失败时恢复原状态
row.statusEnabled = !row.statusEnabled;
// 获取状态标签类型
const getStatusTagType = (status: string) => {
switch (status) {
case 'idle':
return 'success';
case 'occupied':
return 'warning';
case 'locked':
return 'danger';
case 'maintenance':
return 'info';
default:
return 'info';
}
};
// 获取状态文本
const getStatusText = (status: string) => {
switch (status) {
case 'idle':
return '空闲';
case 'occupied':
return '占用';
case 'locked':
return '锁定';
case 'maintenance':
return '维护';
default:
return status;
}
};