优化仓库和库区管理功能,将状态字段类型从number改为string,移除编辑表单中的状态选择项,在列表页面将状态标签改为开关组件支持直接切换状态,新增updateWarehouseStatus和updateZoneStatus接口用于批量更新状态,同时在操作列新增日志按钮并集成操作日志对话框组件,在列表中添加修改时间列,优化查询参数将name改为keyword统一搜索字段命名
This commit is contained in:
@@ -38,17 +38,7 @@
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="状态" prop="status">
|
||||
<el-radio-group v-model="ruleForm.status">
|
||||
<el-radio :value="1">启用</el-radio>
|
||||
<el-radio :value="0">禁用</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="20">
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="24">
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="ruleForm.remark" type="textarea" :rows="3" placeholder="请输入备注" />
|
||||
@@ -96,7 +86,6 @@ const ruleForm = reactive({
|
||||
address: '',
|
||||
contactPerson: '',
|
||||
contactPhone: '',
|
||||
status: 1,
|
||||
remark: '',
|
||||
});
|
||||
|
||||
@@ -113,7 +102,6 @@ const resetForm = () => {
|
||||
ruleForm.address = '';
|
||||
ruleForm.contactPerson = '';
|
||||
ruleForm.contactPhone = '';
|
||||
ruleForm.status = 1;
|
||||
ruleForm.remark = '';
|
||||
};
|
||||
|
||||
@@ -132,7 +120,6 @@ const openDialog = async (row?: any) => {
|
||||
ruleForm.address = data.address || '';
|
||||
ruleForm.contactPerson = data.contactPerson || '';
|
||||
ruleForm.contactPhone = data.contactPhone || '';
|
||||
ruleForm.status = (data.status === '1' || data.status === 1 || data.status === true) ? 1 : 0;
|
||||
ruleForm.remark = data.remark || '';
|
||||
} catch (error) {
|
||||
console.error('获取仓库详情失败:', error);
|
||||
@@ -164,7 +151,6 @@ const onSubmit = async () => {
|
||||
address: ruleForm.address,
|
||||
contactPerson: ruleForm.contactPerson,
|
||||
contactPhone: ruleForm.contactPhone,
|
||||
status: ruleForm.status,
|
||||
remark: ruleForm.remark,
|
||||
};
|
||||
|
||||
|
||||
@@ -9,8 +9,8 @@
|
||||
</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="1" />
|
||||
<el-option label="禁用" :value="0" />
|
||||
<el-option label="启用" value="enabled" />
|
||||
<el-option label="禁用" value="disabled" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
@@ -36,17 +36,23 @@
|
||||
<el-table-column prop="address" label="仓库地址" min-width="200" show-overflow-tooltip />
|
||||
<el-table-column prop="contactPerson" label="联系人" width="100" show-overflow-tooltip />
|
||||
<el-table-column prop="contactPhone" label="联系电话" width="130" show-overflow-tooltip />
|
||||
<el-table-column prop="status" label="状态" width="100" align="center">
|
||||
<el-table-column prop="status" label="状态" width="80" align="center">
|
||||
<template #default="scope">
|
||||
<el-tag :type="scope.row.status == '1' || scope.row.status === 1 ? 'success' : 'danger'">
|
||||
{{ scope.row.status == '1' || scope.row.status === 1 ? '启用' : '禁用' }}
|
||||
</el-tag>
|
||||
<el-switch
|
||||
v-model="scope.row.statusEnabled"
|
||||
inline-prompt
|
||||
active-text="启"
|
||||
inactive-text="停"
|
||||
@change="onStatusChange(scope.row)"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="createdAt" label="创建时间" width="170" show-overflow-tooltip />
|
||||
<el-table-column label="操作" width="150" fixed="right" align="center">
|
||||
<el-table-column prop="updatedAt" label="修改时间" width="170" show-overflow-tooltip />
|
||||
<el-table-column label="操作" width="180" fixed="right" align="center">
|
||||
<template #default="scope">
|
||||
<el-button size="small" text type="primary" @click="onEdit(scope.row)">修改</el-button>
|
||||
<el-button size="small" text type="info" @click="onViewLog(scope.row)">日志</el-button>
|
||||
<el-button size="small" text type="danger" @click="onRowDel(scope.row)">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
@@ -66,6 +72,7 @@
|
||||
</el-card>
|
||||
</div>
|
||||
<EditWarehouse ref="editWarehouseRef" @getWarehouseList="getWarehouseList" />
|
||||
<OperationLogDialog ref="operationLogRef" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -78,8 +85,9 @@ export default {
|
||||
<script setup lang="ts">
|
||||
import { ref, reactive, onMounted } from 'vue';
|
||||
import { ElMessage, ElMessageBox } from 'element-plus';
|
||||
import { listWarehouses, deleteWarehouse } from '/@/api/assets/warehouse';
|
||||
import { listWarehouses, deleteWarehouse, updateWarehouseStatus } from '/@/api/assets/warehouse';
|
||||
import EditWarehouse from './component/editWarehouse.vue';
|
||||
import OperationLogDialog from '/@/views/assets/component/operationLogDialog.vue';
|
||||
|
||||
// 表格数据
|
||||
const tableData = reactive({
|
||||
@@ -88,7 +96,7 @@ const tableData = reactive({
|
||||
loading: false,
|
||||
param: {
|
||||
keyword: '',
|
||||
status: undefined as number | undefined,
|
||||
status: undefined as string | undefined,
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
},
|
||||
@@ -96,13 +104,20 @@ const tableData = reactive({
|
||||
|
||||
// 编辑弹窗ref
|
||||
const editWarehouseRef = ref();
|
||||
// 日志弹窗ref
|
||||
const operationLogRef = ref();
|
||||
|
||||
// 获取仓库列表
|
||||
const getWarehouseList = async () => {
|
||||
tableData.loading = true;
|
||||
try {
|
||||
const res: any = await listWarehouses(tableData.param);
|
||||
tableData.data = res.data?.list || [];
|
||||
const list = res.data?.list || [];
|
||||
// 添加 statusEnabled 字段用于开关组件
|
||||
tableData.data = list.map((item: any) => ({
|
||||
...item,
|
||||
statusEnabled: item.status === 'enabled' || item.status === '1' || item.status === 1,
|
||||
}));
|
||||
tableData.total = res.data?.total || 0;
|
||||
} catch (error) {
|
||||
console.error('获取仓库列表失败:', error);
|
||||
@@ -129,6 +144,25 @@ const onEdit = (row: any) => {
|
||||
editWarehouseRef.value.openDialog(row);
|
||||
};
|
||||
|
||||
// 状态切换
|
||||
const onStatusChange = async (row: any) => {
|
||||
const newStatus = row.statusEnabled ? 'enabled' : 'disabled';
|
||||
const statusText = row.statusEnabled ? '启用' : '禁用';
|
||||
try {
|
||||
await updateWarehouseStatus({ id: [row.id], status: newStatus });
|
||||
ElMessage.success(`${statusText}成功`);
|
||||
} catch (error) {
|
||||
console.error('状态更新失败:', error);
|
||||
// 失败时恢复原状态
|
||||
row.statusEnabled = !row.statusEnabled;
|
||||
}
|
||||
};
|
||||
|
||||
// 查看日志
|
||||
const onViewLog = (row: any) => {
|
||||
operationLogRef.value?.openDialog(row.id);
|
||||
};
|
||||
|
||||
// 删除仓库
|
||||
const onRowDel = (row: any) => {
|
||||
ElMessageBox.confirm(`确定要删除仓库【${row.warehouseName}】吗?`, '提示', {
|
||||
|
||||
Reference in New Issue
Block a user