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:
@ -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();
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user