fix: tie column display to user permissions in material list

Co-authored-by: aider (openai/DeepSeek-V3.2-Thinking) <aider@aider.chat>
This commit is contained in:
dxc
2026-02-26 16:07:54 +08:00
parent b798c42abf
commit dad7ffdc66

View File

@ -98,18 +98,18 @@
<div style="font-weight: bold; margin-bottom: 5px; border-bottom: 1px solid #eee; padding-bottom: 5px"> <div style="font-weight: bold; margin-bottom: 5px; border-bottom: 1px solid #eee; padding-bottom: 5px">
列展示设置 列展示设置
</div> </div>
<el-checkbox v-model="columns.id.visible" label="ID" /> <el-checkbox v-model="columns.id.visible" label="ID" :disabled="!userStore.hasPermission(permissionMap.id)" />
<el-checkbox v-model="columns.companyName.visible" label="所属公司" /> <el-checkbox v-model="columns.companyName.visible" label="所属公司" :disabled="!userStore.hasPermission(permissionMap.companyName)" />
<el-checkbox v-model="columns.name.visible" label="名称" /> <el-checkbox v-model="columns.name.visible" label="名称" :disabled="!userStore.hasPermission(permissionMap.name)" />
<el-checkbox v-model="columns.commonName.visible" label="俗名" /> <el-checkbox v-model="columns.commonName.visible" label="俗名" :disabled="!userStore.hasPermission(permissionMap.commonName)" />
<el-checkbox v-model="columns.category.visible" label="类别" /> <el-checkbox v-model="columns.category.visible" label="类别" :disabled="!userStore.hasPermission(permissionMap.category)" />
<el-checkbox v-model="columns.type.visible" label="类型" /> <el-checkbox v-model="columns.type.visible" label="类型" :disabled="!userStore.hasPermission(permissionMap.type)" />
<el-checkbox v-model="columns.spec.visible" label="规格型号" /> <el-checkbox v-model="columns.spec.visible" label="规格型号" :disabled="!userStore.hasPermission(permissionMap.spec)" />
<el-checkbox v-model="columns.unit.visible" label="单位" /> <el-checkbox v-model="columns.unit.visible" label="单位" :disabled="!userStore.hasPermission(permissionMap.unit)" />
<el-checkbox v-model="columns.inventory.visible" label="库存数" /> <el-checkbox v-model="columns.inventory.visible" label="库存数" :disabled="!userStore.hasPermission(permissionMap.inventory)" />
<el-checkbox v-model="columns.available.visible" label="可用数" /> <el-checkbox v-model="columns.available.visible" label="可用数" :disabled="!userStore.hasPermission(permissionMap.available)" />
<el-checkbox v-model="columns.files.visible" label="资料" /> <el-checkbox v-model="columns.files.visible" label="资料" :disabled="!userStore.hasPermission(permissionMap.files)" />
<el-checkbox v-model="columns.isEnabled.visible" label="状态" /> <el-checkbox v-model="columns.isEnabled.visible" label="状态" :disabled="!userStore.hasPermission(permissionMap.isEnabled)" />
</div> </div>
</el-popover> </el-popover>
</div> </div>
@ -504,6 +504,33 @@ const columns = reactive({
isEnabled: { visible: true } isEnabled: { visible: true }
}); });
// 列与权限Code的映射关系数据库中的code
const permissionMap: Record<string, string> = {
id: 'id',
companyName: 'companyName',
name: 'name',
commonName: 'commonName',
category: 'category',
type: 'type',
spec: 'spec',
unit: 'unit',
inventory: 'inventoryCount', // 前端变量是 inventory数据库Code是 inventoryCount
available: 'availableCount', // 前端变量是 available数据库Code是 availableCount
files: 'files',
isEnabled: 'isEnabled'
};
// 根据用户权限初始化列显示状态
const initColumnPermissions = () => {
Object.keys(columns).forEach(key => {
const code = permissionMap[key];
if (code) {
// 如果用户有该权限则显示列默认true否则隐藏
columns[key].visible = userStore.hasPermission(code);
}
});
};
const companyOptions = ref<string[]>([]); const companyOptions = ref<string[]>([]);
const categoryOptions = ref<string[]>([]); const categoryOptions = ref<string[]>([]);
const typeOptions = ref<string[]>([]); const typeOptions = ref<string[]>([]);
@ -991,6 +1018,8 @@ const handleCameraConfirm = async (file: File) => {
}; };
onMounted(() => { onMounted(() => {
// 先根据权限初始化列显示状态
initColumnPermissions();
getList(); getList();
getOptionsList(); getOptionsList();
}); });