From 50c1afe9c879843e6af22b04b197a3371dbdf5d8 Mon Sep 17 00:00:00 2001 From: b2894lxlx <517289602@qq.com> Date: Wed, 30 Sep 2026 14:22:39 +0800 Subject: [PATCH] =?UTF-8?q?:sparkles:=20=E5=88=97=E8=A1=A8=E5=AF=BC?= =?UTF-8?q?=E5=87=BA=E8=A1=A5=E9=BD=90=E5=88=9B=E5=BB=BA=E4=BA=BA=E5=88=9B?= =?UTF-8?q?=E5=BB=BA=E6=97=B6=E9=97=B4=EF=BC=8C=E5=B9=B6=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E7=BB=84=E7=BB=87=E7=B1=BB=E5=9E=8B=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 多模块列表与导出展示创建人、创建时间;组织类型强制提交数字编码,避免中文 dictKey 反序列化失败。 Co-authored-by: Cursor --- src/option/base/common-address.js | 7 ++ src/option/business/common-cargo.js | 6 +- src/option/business/common-route.js | 5 +- src/option/business/contract-manage.js | 9 +- src/option/business/loading-manage.js | 1 + src/option/business/process-config.js | 6 +- src/option/business/project-apply.js | 6 +- src/option/business/temporary-credit-limit.js | 6 +- src/option/business/transport-plan.js | 6 +- src/option/business/waybill-manage.js | 3 + src/option/transportCapacity/driver.js | 17 ++++ .../transportCapacity/transport-ship.js | 17 ++++ .../transportCapacity/transport-vehicle.js | 17 ++++ src/option/vehicle/accident-record.js | 10 +++ .../vehicle/annual-inspection-record.js | 10 +++ src/option/vehicle/equipment-ledger.js | 11 +++ src/option/vehicle/etc-record.js | 10 +++ src/option/vehicle/insurance-record.js | 10 +++ src/option/vehicle/mileage-record.js | 10 +++ src/option/vehicle/oil-electric-record.js | 10 +++ src/option/vehicle/other-expense-record.js | 10 +++ src/option/vehicle/tire-replacement-record.js | 10 +++ src/option/vehicle/transport-change-record.js | 10 +++ src/option/vehicle/violation-record.js | 10 +++ src/store/getters.js | 4 + src/utils/auth.js | 25 +++++- src/views/authority/apikey.vue | 10 +-- src/views/authority/ratelimit.vue | 10 +-- src/views/authority/role.vue | 6 +- src/views/base/airport-master.vue | 14 ++-- src/views/base/common-address.vue | 7 +- src/views/base/fee-item.vue | 7 ++ src/views/base/insurance-ocr-template.vue | 3 +- src/views/base/measurement-unit.vue | 3 +- src/views/base/port-terminal.vue | 14 ++-- src/views/base/railway-station.vue | 14 ++-- src/views/business/common-cargo.vue | 7 +- src/views/business/common-route.vue | 7 +- .../components/business-crud-page.vue | 7 +- .../components/shipping-template-page.vue | 3 +- .../components/transport-plan-page.vue | 7 +- .../components/waybill-manage-page.vue | 7 +- src/views/business/contract-manage.vue | 7 +- src/views/business/loading-manage.vue | 6 ++ src/views/business/master-order.vue | 2 + src/views/business/process-config.vue | 7 +- src/views/business/project-apply.vue | 7 +- src/views/business/temporary-credit-limit.vue | 7 +- src/views/business/voucher-manage-detail.vue | 5 +- src/views/business/voucher-manage.vue | 6 +- .../payment/components/bill-payment-table.vue | 3 +- src/views/payment/receipt-claim-record.vue | 6 +- src/views/payment/receipt-flow.vue | 6 +- src/views/report/reportlist.vue | 6 +- src/views/resource/oss.vue | 4 +- src/views/resource/sms.vue | 4 +- .../components/pre-settlement-editor.vue | 6 +- src/views/settlement/pre-settlement.vue | 6 +- .../settlement/settlement-adjustment.vue | 3 +- src/views/system/dept.vue | 82 ++++++++++++++++--- src/views/system/dict.vue | 6 +- src/views/system/dictbiz.vue | 6 +- src/views/system/menu.vue | 4 +- src/views/system/tenant.vue | 20 ++--- src/views/system/user.vue | 24 +++--- src/views/tool/code.vue | 8 +- src/views/transportCapacity/driver.vue | 4 +- src/views/transportCapacity/ship.vue | 4 +- .../transportCapacity/vehicle-dispatch.vue | 3 +- src/views/transportCapacity/vehicle.vue | 4 +- src/views/util/demo/dict.vue | 4 +- src/views/util/demo/dictbiz.vue | 4 +- src/views/vehicle/accident-record.vue | 4 +- .../vehicle/annual-inspection-record.vue | 4 +- .../vehicle/credit-score-quantification.vue | 3 +- src/views/vehicle/customer-archive.vue | 22 ++++- src/views/vehicle/equipment-ledger.vue | 4 +- src/views/vehicle/etc-record.vue | 4 +- src/views/vehicle/insurance-record.vue | 4 +- src/views/vehicle/maintenance-plan.vue | 14 +++- src/views/vehicle/maintenance-record.vue | 14 +++- src/views/vehicle/mileage-record.vue | 4 +- src/views/vehicle/oil-electric-record.vue | 4 +- src/views/vehicle/other-expense-record.vue | 4 +- src/views/vehicle/tire-replacement-record.vue | 4 +- src/views/vehicle/transport-change-record.vue | 4 +- src/views/vehicle/violation-record.vue | 4 +- 87 files changed, 521 insertions(+), 212 deletions(-) diff --git a/src/option/base/common-address.js b/src/option/base/common-address.js index 2316d19..6860fb7 100644 --- a/src/option/base/common-address.js +++ b/src/option/base/common-address.js @@ -146,6 +146,13 @@ export const createOption = () => ({ showWordLimit: true, rules: [{ max: 200, message: '备注不能超过200个字', trigger: 'blur' }], }, + { + label: '创建人', + prop: 'createUserName', + minWidth: 120, + addDisplay: false, + editDisplay: false, + }, { label: '更新时间', prop: 'updateTime', diff --git a/src/option/business/common-cargo.js b/src/option/business/common-cargo.js index f9211fa..0c3a323 100644 --- a/src/option/business/common-cargo.js +++ b/src/option/business/common-cargo.js @@ -193,11 +193,11 @@ export const option = createCrudOption([ editDisplay: false, }, ...auditColumns - .filter(column => ['updateTime', 'createTime'].includes(column.prop)) + .filter(column => ['createUserName', 'createTime', 'updateTime'].includes(column.prop)) .sort( (first, second) => - ['updateTime', 'createTime'].indexOf(first.prop) - - ['updateTime', 'createTime'].indexOf(second.prop) + ['createUserName', 'createTime', 'updateTime'].indexOf(first.prop) - + ['createUserName', 'createTime', 'updateTime'].indexOf(second.prop) ), // ---------- 表单隐藏字段 ---------- diff --git a/src/option/business/common-route.js b/src/option/business/common-route.js index 3c57882..2be7a83 100644 --- a/src/option/business/common-route.js +++ b/src/option/business/common-route.js @@ -281,14 +281,13 @@ export const option = { filterable: true, }, ...auditColumns - .filter(column => column.prop !== 'createUserName') .map(column => ['createTime', 'updateTime'].includes(column.prop) ? { ...column, minWidth: 190 } : column ) .sort( (first, second) => - ['updateUserName', 'updateTime', 'createTime'].indexOf(first.prop) - - ['updateUserName', 'updateTime', 'createTime'].indexOf(second.prop) + ['createUserName', 'updateUserName', 'createTime', 'updateTime'].indexOf(first.prop) - + ['createUserName', 'updateUserName', 'createTime', 'updateTime'].indexOf(second.prop) ), ]), dialogCustomClass: 'avue-dialog--common-route', diff --git a/src/option/business/contract-manage.js b/src/option/business/contract-manage.js index 9bd9956..4a72be5 100644 --- a/src/option/business/contract-manage.js +++ b/src/option/business/contract-manage.js @@ -532,6 +532,13 @@ export const option = createCrudOption([ order: 30, minWidth: 110, }, + { + label: '创建人', + prop: 'createUserName', + minWidth: 120, + addDisplay: false, + editDisplay: false, + }, { label: '创建时间', prop: 'createTime', @@ -730,7 +737,7 @@ export const option = createCrudOption([ labelWidth: 0, }, ...auditColumns - .filter(column => column.prop !== 'createTime') + .filter(column => !['createTime', 'createUserName'].includes(column.prop)) .map(column => ({ ...column, hide: true })), ]); diff --git a/src/option/business/loading-manage.js b/src/option/business/loading-manage.js index 4920d79..2a5e9c5 100644 --- a/src/option/business/loading-manage.js +++ b/src/option/business/loading-manage.js @@ -41,6 +41,7 @@ export const loadingManageConfig = { { prop: 'carrierName', label: '承运商' }, { prop: 'transportType', label: '运输方式' }, { prop: 'dataSource', label: '数据来源' }, + { prop: 'createUserName', label: '创建人' }, { prop: 'createTime', label: '创建时间' }, { prop: 'updateTime', label: '更新时间' }, { prop: 'currentProcessNode', label: '过程节点' }, diff --git a/src/option/business/process-config.js b/src/option/business/process-config.js index 74c615c..3a43a20 100644 --- a/src/option/business/process-config.js +++ b/src/option/business/process-config.js @@ -112,12 +112,12 @@ export const option = { editDisplay: false, }, ...auditColumns - .filter(column => ['updateTime', 'createTime'].includes(column.prop)) + .filter(column => ['createUserName', 'createTime', 'updateTime'].includes(column.prop)) .map(column => ({ ...column, minWidth: 190 })) .sort( (first, second) => - ['updateTime', 'createTime'].indexOf(first.prop) - - ['updateTime', 'createTime'].indexOf(second.prop) + ['createUserName', 'createTime', 'updateTime'].indexOf(first.prop) - + ['createUserName', 'createTime', 'updateTime'].indexOf(second.prop) ), { label: '项目ID集合', diff --git a/src/option/business/project-apply.js b/src/option/business/project-apply.js index 0c6ed41..721413a 100644 --- a/src/option/business/project-apply.js +++ b/src/option/business/project-apply.js @@ -452,5 +452,9 @@ export const option = createCrudOption([ span: 24, hide: true, }, - ...auditColumns.map(column => ({ ...column, hide: true })), + ...auditColumns.map(column => + ['createUserName', 'createTime'].includes(column.prop) + ? column + : { ...column, hide: true } + ), ]); diff --git a/src/option/business/temporary-credit-limit.js b/src/option/business/temporary-credit-limit.js index eab56af..12b480d 100644 --- a/src/option/business/temporary-credit-limit.js +++ b/src/option/business/temporary-credit-limit.js @@ -332,7 +332,11 @@ export const option = { addDisplay: false, editDisplay: false, }, - ...auditColumns.map(column => ({ ...column, hide: true })), + ...auditColumns.map(column => + ['createUserName', 'createTime'].includes(column.prop) + ? column + : { ...column, hide: true } + ), ])), dialogWidth: 1100, menuFixed: 'right', diff --git a/src/option/business/transport-plan.js b/src/option/business/transport-plan.js index 5fb8150..152054f 100644 --- a/src/option/business/transport-plan.js +++ b/src/option/business/transport-plan.js @@ -249,9 +249,10 @@ export const config = { title: '其它信息', fields: [ ['remark', '备注'], + ['createUserName', '创建人'], + ['createTime', '创建时间'], ['updateUserName', '更新人'], ['updateTime', '更新时间'], - ['createTime', '创建时间'], ], }, ], @@ -457,6 +458,9 @@ export const option = { showWordLimit: true, rules: textRule('备注', 200), }, + { + ...auditColumn('createUserName'), + }, { ...auditColumn('updateUserName'), }, diff --git a/src/option/business/waybill-manage.js b/src/option/business/waybill-manage.js index 3e2349d..49fa17b 100644 --- a/src/option/business/waybill-manage.js +++ b/src/option/business/waybill-manage.js @@ -883,6 +883,9 @@ export const option = { viewDisplay: false, display: false, }, + { + ...auditColumn('createUserName'), + }, { ...auditColumn('createTime'), }, diff --git a/src/option/transportCapacity/driver.js b/src/option/transportCapacity/driver.js index 415cabe..95678c7 100644 --- a/src/option/transportCapacity/driver.js +++ b/src/option/transportCapacity/driver.js @@ -125,6 +125,23 @@ export const option = { slot: true, minWidth: 160, }, + { + label: '创建人', + prop: 'createUserName', + minWidth: 120, + addDisplay: false, + editDisplay: false, + }, + { + label: '创建时间', + prop: 'createTime', + type: 'datetime', + format: 'YYYY-MM-DD HH:mm:ss', + valueFormat: 'YYYY-MM-DD HH:mm:ss', + minWidth: 170, + addDisplay: false, + editDisplay: false, + }, { label: '准驾车型', prop: 'drivingType', diff --git a/src/option/transportCapacity/transport-ship.js b/src/option/transportCapacity/transport-ship.js index 8e4c44a..bae59ac 100644 --- a/src/option/transportCapacity/transport-ship.js +++ b/src/option/transportCapacity/transport-ship.js @@ -91,6 +91,23 @@ export const option = { minWidth: 140, align: 'center', }, + { + label: '创建人', + prop: 'createUserName', + minWidth: 120, + addDisplay: false, + editDisplay: false, + }, + { + label: '创建时间', + prop: 'createTime', + type: 'datetime', + format: 'YYYY-MM-DD HH:mm:ss', + valueFormat: 'YYYY-MM-DD HH:mm:ss', + minWidth: 170, + addDisplay: false, + editDisplay: false, + }, { label: '', prop: 'expireStatus', diff --git a/src/option/transportCapacity/transport-vehicle.js b/src/option/transportCapacity/transport-vehicle.js index 50038c1..df05326 100644 --- a/src/option/transportCapacity/transport-vehicle.js +++ b/src/option/transportCapacity/transport-vehicle.js @@ -151,6 +151,23 @@ export const option = { minWidth: 130, align: 'center', }, + { + label: '创建人', + prop: 'createUserName', + minWidth: 120, + addDisplay: false, + editDisplay: false, + }, + { + label: '创建时间', + prop: 'createTime', + type: 'datetime', + format: 'YYYY-MM-DD HH:mm:ss', + valueFormat: 'YYYY-MM-DD HH:mm:ss', + minWidth: 170, + addDisplay: false, + editDisplay: false, + }, { label: '', prop: 'expireStatus', diff --git a/src/option/vehicle/accident-record.js b/src/option/vehicle/accident-record.js index 9e19045..6ba7b9b 100644 --- a/src/option/vehicle/accident-record.js +++ b/src/option/vehicle/accident-record.js @@ -209,6 +209,14 @@ export const option = { editDisplay: false, viewDisplay: false, }, + { + label: '创建人', + prop: 'createUserName', + addDisplay: false, + editDisplay: false, + display: false, + minWidth: 120, + }, { label: '创建时间', prop: 'createTime', @@ -286,6 +294,8 @@ export const exportColumns = [ { prop: 'insuranceClaimAmount', label: '保险理赔金额' }, { prop: 'accidentReasonDamage', label: '事故原因及损坏情况' }, { prop: 'remark', label: '备注' }, + { prop: 'createUserName', label: '创建人' }, + { prop: 'createTime', label: '创建时间' }, ]; export const excelOption = { diff --git a/src/option/vehicle/annual-inspection-record.js b/src/option/vehicle/annual-inspection-record.js index 8413a30..b60671e 100644 --- a/src/option/vehicle/annual-inspection-record.js +++ b/src/option/vehicle/annual-inspection-record.js @@ -210,6 +210,14 @@ export const option = { editDisplay: false, viewDisplay: false, }, + { + label: '创建人', + prop: 'createUserName', + addDisplay: false, + editDisplay: false, + display: false, + minWidth: 120, + }, { label: '创建时间', prop: 'createTime', @@ -286,6 +294,8 @@ export const exportColumns = [ { prop: 'fee', label: '费用(元)' }, { prop: 'assessmentUnit', label: '评定(复核)单位' }, { prop: 'remark', label: '备注' }, + { prop: 'createUserName', label: '创建人' }, + { prop: 'createTime', label: '创建时间' }, ]; export const excelOption = { diff --git a/src/option/vehicle/equipment-ledger.js b/src/option/vehicle/equipment-ledger.js index d2905b6..072b123 100644 --- a/src/option/vehicle/equipment-ledger.js +++ b/src/option/vehicle/equipment-ledger.js @@ -147,6 +147,15 @@ export const option = { viewDisplay: false, minWidth: 170, }, + { + label: '创建人', + prop: 'createUserName', + display: false, + addDisplay: false, + editDisplay: false, + viewDisplay: false, + minWidth: 120, + }, { label: '创建时间', prop: 'createTime', @@ -224,6 +233,8 @@ export const exportColumns = [ { prop: 'specificationModel', label: '规格型号' }, { prop: 'remark', label: '备注' }, { prop: 'originalEquipmentNo', label: '原厂设备号' }, + { prop: 'createUserName', label: '创建人' }, + { prop: 'createTime', label: '创建时间' }, ]; export const excelOption = { diff --git a/src/option/vehicle/etc-record.js b/src/option/vehicle/etc-record.js index 196c952..ac89e11 100644 --- a/src/option/vehicle/etc-record.js +++ b/src/option/vehicle/etc-record.js @@ -172,6 +172,14 @@ export const option = { editDisplay: false, viewDisplay: false, }, + { + label: '创建人', + prop: 'createUserName', + addDisplay: false, + editDisplay: false, + display: false, + minWidth: 120, + }, { label: '创建时间', prop: 'createTime', @@ -218,6 +226,8 @@ export const exportColumns = [ { prop: 'exitStation', label: '出口站' }, { prop: 'dataSource', label: '数据来源' }, { prop: 'remark', label: '备注' }, + { prop: 'createUserName', label: '创建人' }, + { prop: 'createTime', label: '创建时间' }, ]; export const excelOption = { diff --git a/src/option/vehicle/insurance-record.js b/src/option/vehicle/insurance-record.js index 17d2502..9d8ea71 100644 --- a/src/option/vehicle/insurance-record.js +++ b/src/option/vehicle/insurance-record.js @@ -182,6 +182,14 @@ export const option = { hide: true, rules: [{ max: 200, message: '备注最多 200 个字', trigger: 'blur' }], }, + { + label: '创建人', + prop: 'createUserName', + addDisplay: false, + editDisplay: false, + display: false, + minWidth: 120, + }, { label: '创建时间', prop: 'createTime', @@ -260,6 +268,8 @@ export const exportColumns = [ { prop: 'invoiceNo', label: '发票号' }, { prop: 'invoiceDate', label: '开票日期' }, { prop: 'remark', label: '备注' }, + { prop: 'createUserName', label: '创建人' }, + { prop: 'createTime', label: '创建时间' }, ]; export const excelOption = { diff --git a/src/option/vehicle/mileage-record.js b/src/option/vehicle/mileage-record.js index 3368696..ae505cf 100644 --- a/src/option/vehicle/mileage-record.js +++ b/src/option/vehicle/mileage-record.js @@ -140,6 +140,14 @@ export const option = { editDisplay: false, viewDisplay: false, }, + { + label: '创建人', + prop: 'createUserName', + addDisplay: false, + editDisplay: false, + display: false, + minWidth: 120, + }, { label: '创建时间', prop: 'createTime', @@ -215,6 +223,8 @@ export const exportColumns = [ { prop: 'monthlyMileage', label: '本月行驶里程数' }, { prop: 'totalMileage', label: '累计行驶里程数' }, { prop: 'remark', label: '备注' }, + { prop: 'createUserName', label: '创建人' }, + { prop: 'createTime', label: '创建时间' }, ]; export const excelOption = { diff --git a/src/option/vehicle/oil-electric-record.js b/src/option/vehicle/oil-electric-record.js index c36e7e2..41f452d 100644 --- a/src/option/vehicle/oil-electric-record.js +++ b/src/option/vehicle/oil-electric-record.js @@ -232,6 +232,14 @@ export const option = { editDisplay: false, viewDisplay: false, }, + { + label: '创建人', + prop: 'createUserName', + addDisplay: false, + editDisplay: false, + display: false, + minWidth: 120, + }, { label: '创建时间', prop: 'createTime', @@ -311,6 +319,8 @@ export const exportColumns = [ { prop: 'balance', label: '余额' }, { prop: 'station', label: '站点' }, { prop: 'remark', label: '备注' }, + { prop: 'createUserName', label: '创建人' }, + { prop: 'createTime', label: '创建时间' }, ]; export const excelOption = { diff --git a/src/option/vehicle/other-expense-record.js b/src/option/vehicle/other-expense-record.js index 535a4c9..4f4f2dc 100644 --- a/src/option/vehicle/other-expense-record.js +++ b/src/option/vehicle/other-expense-record.js @@ -165,6 +165,14 @@ export const option = { editDisplay: false, viewDisplay: false, }, + { + label: '创建人', + prop: 'createUserName', + addDisplay: false, + editDisplay: false, + display: false, + minWidth: 120, + }, { label: '创建时间', prop: 'createTime', @@ -209,6 +217,8 @@ export const exportColumns = [ { prop: 'amount', label: '金额' }, { prop: 'dataSource', label: '数据来源' }, { prop: 'remark', label: '备注' }, + { prop: 'createUserName', label: '创建人' }, + { prop: 'createTime', label: '创建时间' }, ]; export const excelOption = { diff --git a/src/option/vehicle/tire-replacement-record.js b/src/option/vehicle/tire-replacement-record.js index 6077e51..65711b7 100644 --- a/src/option/vehicle/tire-replacement-record.js +++ b/src/option/vehicle/tire-replacement-record.js @@ -147,6 +147,14 @@ export const option = { slot: true, formslot: true, }, + { + label: '创建人', + prop: 'createUserName', + addDisplay: false, + editDisplay: false, + display: false, + minWidth: 120, + }, { label: '创建时间', prop: 'createTime', @@ -222,6 +230,8 @@ export const exportColumns = [ { prop: 'replacementCost', label: '换胎费用' }, { prop: 'replacementDescription', label: '换胎说明' }, { prop: 'remark', label: '备注' }, + { prop: 'createUserName', label: '创建人' }, + { prop: 'createTime', label: '创建时间' }, ]; export const excelOption = { diff --git a/src/option/vehicle/transport-change-record.js b/src/option/vehicle/transport-change-record.js index c90dea6..7728e98 100644 --- a/src/option/vehicle/transport-change-record.js +++ b/src/option/vehicle/transport-change-record.js @@ -97,6 +97,14 @@ export const option = { slot: true, formslot: true, }, + { + label: '创建人', + prop: 'createUserName', + addDisplay: false, + editDisplay: false, + display: false, + minWidth: 120, + }, { label: '创建时间', prop: 'createTime', @@ -169,6 +177,8 @@ export const exportColumns = [ { prop: 'changeItem', label: '变更事项' }, { prop: 'changeContent', label: '变更内容' }, { prop: 'remark', label: '备注' }, + { prop: 'createUserName', label: '创建人' }, + { prop: 'createTime', label: '创建时间' }, ]; export const excelOption = { diff --git a/src/option/vehicle/violation-record.js b/src/option/vehicle/violation-record.js index 3ae5991..2246525 100644 --- a/src/option/vehicle/violation-record.js +++ b/src/option/vehicle/violation-record.js @@ -221,6 +221,14 @@ export const option = { slot: true, formslot: true, }, + { + label: '创建人', + prop: 'createUserName', + addDisplay: false, + editDisplay: false, + display: false, + minWidth: 120, + }, { label: '创建时间', prop: 'createTime', @@ -299,6 +307,8 @@ export const exportColumns = [ { prop: 'processStatus', label: '状态' }, { prop: 'processDescription', label: '过程描述' }, { prop: 'processResult', label: '处理结果' }, + { prop: 'createUserName', label: '创建人' }, + { prop: 'createTime', label: '创建时间' }, ]; export const excelOption = { diff --git a/src/store/getters.js b/src/store/getters.js index fb53825..250ac19 100644 --- a/src/store/getters.js +++ b/src/store/getters.js @@ -1,8 +1,12 @@ +import { isAdministrator as checkAdministrator } from '@/utils/auth'; + const getters = { tag: state => state.tags.tag, language: state => state.common.language, setting: state => state.common.setting, userInfo: state => state.user.userInfo, + // 超级管理员:角色别名中包含 administrator + isAdministrator: state => checkAdministrator(state.user.userInfo), colorName: state => state.common.colorName, themeName: state => state.common.themeName, isMacOs: (state, getters) => getters.themeName === 'mac-os', diff --git a/src/utils/auth.js b/src/utils/auth.js index 0c4cdd8..7079756 100644 --- a/src/utils/auth.js +++ b/src/utils/auth.js @@ -6,8 +6,31 @@ const RefreshTokenKey = website.refreshTokenKey; const SessionId = 'JSESSIONID'; const UserId = 'b-user-id'; +/** 超级管理员角色别名 */ +export const ADMINISTRATOR_ROLE_ALIAS = 'administrator'; + +/** + * 是否超级管理员:角色别名中包含 administrator 即为超级管理员 + * + * @param {object|string|string[]} [userInfoOrAuthority] 用户信息,或 authority / role_name 字符串/数组 + * @returns {boolean} + */ +export function isAdministrator(userInfoOrAuthority) { + let authority = userInfoOrAuthority; + if (authority && typeof authority === 'object' && !Array.isArray(authority)) { + authority = authority.authority ?? authority.role_name ?? authority.roleName ?? ''; + } + const roles = Array.isArray(authority) + ? authority + : String(authority || '') + .split(/[,,]/) + .map(role => role.trim()) + .filter(Boolean); + return roles.some(role => String(role).trim() === ADMINISTRATOR_ROLE_ALIAS); +} + export function getToken() { - return Cookies.get(TokenKey); + return Cookies.get(TokenKey); } export function setToken(token) { diff --git a/src/views/authority/apikey.vue b/src/views/authority/apikey.vue index 2501704..275d96e 100644 --- a/src/views/authority/apikey.vue +++ b/src/views/authority/apikey.vue @@ -24,7 +24,7 @@ type="danger" icon="el-icon-delete" plain - v-if="userInfo.authority.includes('admin')" + v-if="isAdministrator" @click="handleDelete" >删除 @@ -43,19 +43,19 @@