feat: add permission management to inbound service module
Co-authored-by: aider (openai/DeepSeek-V3.2-Thinking) <aider@aider.chat>
This commit is contained in:
@ -45,21 +45,21 @@
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="handleSearch">搜索</el-button>
|
||||
<el-button @click="resetSearch">重置</el-button>
|
||||
<el-button type="success" @click="handleAdd">新增服务</el-button>
|
||||
<el-button v-if="userStore.hasPermission('inbound_service:operation')" type="success" @click="handleAdd">新增服务</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
|
||||
<el-table :data="tableData" border stripe style="width: 100%;" v-loading="loading">
|
||||
<el-table-column prop="sku" label="SKU" width="200" />
|
||||
<el-table-column prop="material_name" label="物料名称" />
|
||||
<el-table-column prop="provider_name" label="服务商" width="150" />
|
||||
<el-table-column prop="sale_price" label="售价" width="120">
|
||||
<el-table-column v-if="hasColumnPermission('sku')" prop="sku" label="SKU" width="200" />
|
||||
<el-table-column v-if="hasColumnPermission('material_name')" prop="material_name" label="物料名称" />
|
||||
<el-table-column v-if="hasColumnPermission('provider_name')" prop="provider_name" label="服务商" width="150" />
|
||||
<el-table-column v-if="hasColumnPermission('sale_price')" prop="sale_price" label="售价" width="120">
|
||||
<template #default="{row}">¥{{ row.sale_price.toFixed(2) }}</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="description" label="简介" show-overflow-tooltip />
|
||||
<el-table-column prop="created_at" label="创建时间" width="160" />
|
||||
<el-table-column label="操作" width="180" fixed="right">
|
||||
<el-table-column v-if="hasColumnPermission('description')" prop="description" label="简介" show-overflow-tooltip />
|
||||
<el-table-column v-if="hasColumnPermission('created_at')" prop="created_at" label="创建时间" width="160" />
|
||||
<el-table-column v-if="userStore.hasPermission('inbound_service:operation')" label="操作" width="180" fixed="right">
|
||||
<template #default="{row}">
|
||||
<el-button size="small" @click="handleEdit(row)">编辑</el-button>
|
||||
<el-button size="small" type="danger" @click="handleDelete(row)">删除</el-button>
|
||||
@ -198,6 +198,7 @@ import { ref, reactive, onMounted } from 'vue'
|
||||
import { InfoFilled, Box, House } from '@element-plus/icons-vue'
|
||||
import type { FormInstance, FormRules } from 'element-plus'
|
||||
import { ElMessage, ElMessageBox } from 'element-plus'
|
||||
import { useUserStore } from '@/stores/user'
|
||||
import {
|
||||
getServiceList,
|
||||
createService,
|
||||
@ -212,6 +213,27 @@ import {
|
||||
type MaterialBaseItem
|
||||
} from '@/api/inbound/service'
|
||||
|
||||
const userStore = useUserStore()
|
||||
|
||||
// 列与权限Code的映射关系(数据库中的code)
|
||||
const permissionMap: Record<string, string> = {
|
||||
sku: 'inbound_service:sku',
|
||||
material_name: 'inbound_service:material_name',
|
||||
provider_name: 'inbound_service:provider_name',
|
||||
sale_price: 'inbound_service:sale_price',
|
||||
description: 'inbound_service:description',
|
||||
created_at: 'inbound_service:created_at',
|
||||
}
|
||||
|
||||
// 检查列权限
|
||||
const hasColumnPermission = (prop: string) => {
|
||||
if (userStore.role === 'SUPER_ADMIN' || userStore.username === 'IRIS') {
|
||||
return true
|
||||
}
|
||||
const code = permissionMap[prop]
|
||||
return code ? userStore.hasPermission(code) : false
|
||||
}
|
||||
|
||||
// 表格数据
|
||||
const tableData = ref<ServiceItem[]>([])
|
||||
const loading = ref(false)
|
||||
|
||||
Reference in New Issue
Block a user