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 @@
启用
禁用
日志
@@ -522,7 +522,7 @@ sortable: true, span: 24, width: 180 },
};
},
computed: {
- ...mapGetters(['userInfo']),
+ ...mapGetters(['userInfo', 'isAdministrator']),
ids() {
let ids = [];
this.selectionList.forEach(ele => {
diff --git a/src/views/authority/ratelimit.vue b/src/views/authority/ratelimit.vue
index 9c46732..e27cae5 100644
--- a/src/views/authority/ratelimit.vue
+++ b/src/views/authority/ratelimit.vue
@@ -24,7 +24,7 @@
type="danger"
icon="el-icon-delete"
plain
- v-if="userInfo.authority.includes('administrator')"
+ v-if="isAdministrator"
@click="handleDelete"
>删除
@@ -54,19 +54,19 @@
启用
禁用
日志
@@ -401,7 +401,7 @@ sortable: true, span: 24, width: 170 },
};
},
computed: {
- ...mapGetters(['userInfo']),
+ ...mapGetters(['userInfo', 'isAdministrator']),
ids() {
let ids = [];
this.selectionList.forEach(ele => {
diff --git a/src/views/authority/role.vue b/src/views/authority/role.vue
index d506fd1..e24252c 100644
--- a/src/views/authority/role.vue
+++ b/src/views/authority/role.vue
@@ -31,7 +31,7 @@
权限设置
@@ -39,7 +39,7 @@
权限设置
@@ -354,7 +354,7 @@ export default {
};
},
computed: {
- ...mapGetters(['userInfo', 'permission']),
+ ...mapGetters(['userInfo', 'permission', 'isAdministrator']),
permissionList() {
return {
addBtn: this.validData(this.permission.role_add, false),
diff --git a/src/views/base/airport-master.vue b/src/views/base/airport-master.vue
index 4a2ba77..8ef4edd 100644
--- a/src/views/base/airport-master.vue
+++ b/src/views/base/airport-master.vue
@@ -150,7 +150,7 @@ import { mapGetters } from 'vuex';
import { downloadXls } from '@/utils/util';
import { openImportDialog } from '@/utils/import-excel';
import { formatUpdateUserName } from '@/utils/audit';
-import { getToken } from '@/utils/auth';
+import { getToken, isAdministrator } from '@/utils/auth';
import { getCoordinateValidationMessage, normalizeCoordinateInput } from '@/utils/coordinate';
import AddressMapPicker from '@/components/address-map-picker/main.vue';
import NProgress from 'nprogress';
@@ -460,6 +460,13 @@ export default {
showWordLimit: true,
rules: [{ max: 200, message: '备注不能超过200字', trigger: 'blur' }],
},
+ {
+ label: '创建人',
+ prop: 'createUserName',
+ addDisplay: false,
+ editDisplay: false,
+ minWidth: 120,
+ },
{
label: '更新人',
prop: 'updateUserName',
@@ -548,10 +555,7 @@ export default {
};
},
isAdmin() {
- const authority = this.userInfo && this.userInfo.authority;
- return Array.isArray(authority)
- ? authority.includes('admin')
- : String(authority || '').includes('admin');
+ return isAdministrator(this.userInfo);
},
ids() {
let ids = [];
diff --git a/src/views/base/common-address.vue b/src/views/base/common-address.vue
index 58e864b..da340c2 100644
--- a/src/views/base/common-address.vue
+++ b/src/views/base/common-address.vue
@@ -269,7 +269,7 @@ import { exportBlob } from '@/api/common';
import { createOption } from '@/option/base/common-address';
import { mapGetters } from 'vuex';
import { downloadXls } from '@/utils/util';
-import { getToken } from '@/utils/auth';
+import { getToken, isAdministrator } from '@/utils/auth';
import { normalizeMapSearchResults, searchAmapPlaceText } from '@/utils/map-search';
import { isMobile } from '@/utils/validate';
import NProgress from 'nprogress';
@@ -324,10 +324,7 @@ export default {
};
},
isAdmin() {
- const authority = this.userInfo && this.userInfo.authority;
- return Array.isArray(authority)
- ? authority.includes('admin')
- : String(authority || '').includes('admin');
+ return isAdministrator(this.userInfo);
},
ids() {
return this.selectionList.map(item => item.id).join(',');
diff --git a/src/views/base/fee-item.vue b/src/views/base/fee-item.vue
index 9d5eed0..3693a3d 100644
--- a/src/views/base/fee-item.vue
+++ b/src/views/base/fee-item.vue
@@ -238,6 +238,13 @@ export default {
value: 'value',
},
},
+ {
+ label: '创建人',
+ prop: 'createUserName',
+ minWidth: 120,
+ addDisplay: false,
+ editDisplay: false,
+ },
{
label: '更新人',
prop: 'updateUserName',
diff --git a/src/views/base/insurance-ocr-template.vue b/src/views/base/insurance-ocr-template.vue
index 8a015e6..7926a4d 100644
--- a/src/views/base/insurance-ocr-template.vue
+++ b/src/views/base/insurance-ocr-template.vue
@@ -143,6 +143,7 @@
import { mapGetters } from 'vuex';
import { getDetail, getList, remove, submit } from '@/api/base/insurance-ocr-template';
import SectionCard from '@/components/section-card/main.vue';
+import { isAdministrator } from '@/utils/auth';
const insuranceFieldKeys = [
'保险类型',
@@ -203,7 +204,7 @@ export default {
computed: {
...mapGetters(['permission', 'userInfo']),
isAdmin() {
- return String(this.userInfo.authority || '').includes('admin');
+ return isAdministrator(this.userInfo);
},
selectionIds() {
return this.selectionList.map(item => item.id).join(',');
diff --git a/src/views/base/measurement-unit.vue b/src/views/base/measurement-unit.vue
index ebd7613..4034d01 100644
--- a/src/views/base/measurement-unit.vue
+++ b/src/views/base/measurement-unit.vue
@@ -82,6 +82,7 @@
import { mapGetters } from 'vuex';
import { changeStatus, getDetail, getList, remove, submit } from '@/api/base/measurement-unit';
import { createOption } from '@/option/base/measurement-unit';
+import { isAdministrator } from '@/utils/auth';
export default {
data() {
@@ -111,7 +112,7 @@ export default {
return this.selectionList.map(item => item.id).join(',');
},
isAdmin() {
- return String(this.userInfo?.authority || '').includes('admin');
+ return isAdministrator(this.userInfo);
},
},
methods: {
diff --git a/src/views/base/port-terminal.vue b/src/views/base/port-terminal.vue
index 06ede97..736c648 100644
--- a/src/views/base/port-terminal.vue
+++ b/src/views/base/port-terminal.vue
@@ -270,7 +270,7 @@ import { mapGetters } from 'vuex';
import { downloadXls } from '@/utils/util';
import { openImportDialog } from '@/utils/import-excel';
import { formatUpdateUserName } from '@/utils/audit';
-import { getToken } from '@/utils/auth';
+import { getToken, isAdministrator } from '@/utils/auth';
import { getCoordinateValidationMessage, normalizeCoordinateInput } from '@/utils/coordinate';
import AddressMapPicker from '@/components/address-map-picker/main.vue';
import NProgress from 'nprogress';
@@ -621,6 +621,13 @@ export default {
showWordLimit: true,
rules: [{ max: 200, message: '备注不能超过200个字', trigger: 'blur' }],
},
+ {
+ label: '创建人',
+ prop: 'createUserName',
+ addDisplay: false,
+ editDisplay: false,
+ minWidth: 120,
+ },
{
label: '更新人',
prop: 'updateUserName',
@@ -708,10 +715,7 @@ export default {
};
},
isAdmin() {
- const authority = this.userInfo && this.userInfo.authority;
- return Array.isArray(authority)
- ? authority.includes('admin')
- : String(authority || '').includes('admin');
+ return isAdministrator(this.userInfo);
},
isParentRegionLocked() {
return this.form.category === '码头';
diff --git a/src/views/base/railway-station.vue b/src/views/base/railway-station.vue
index 64e20af..336e5f1 100644
--- a/src/views/base/railway-station.vue
+++ b/src/views/base/railway-station.vue
@@ -150,7 +150,7 @@ import { mapGetters } from 'vuex';
import { downloadXls } from '@/utils/util';
import { openImportDialog } from '@/utils/import-excel';
import { formatUpdateUserName } from '@/utils/audit';
-import { getToken } from '@/utils/auth';
+import { getToken, isAdministrator } from '@/utils/auth';
import { getCoordinateValidationMessage, normalizeCoordinateInput } from '@/utils/coordinate';
import AddressMapPicker from '@/components/address-map-picker/main.vue';
import NProgress from 'nprogress';
@@ -433,6 +433,13 @@ export default {
showWordLimit: true,
rules: [{ max: 200, message: '备注不能超过200字', trigger: 'blur' }],
},
+ {
+ label: '创建人',
+ prop: 'createUserName',
+ addDisplay: false,
+ editDisplay: false,
+ minWidth: 120,
+ },
{
label: '更新人',
prop: 'updateUserName',
@@ -519,10 +526,7 @@ export default {
};
},
isAdmin() {
- const authority = this.userInfo && this.userInfo.authority;
- return Array.isArray(authority)
- ? authority.includes('admin')
- : String(authority || '').includes('admin');
+ return isAdministrator(this.userInfo);
},
ids() {
let ids = [];
diff --git a/src/views/business/common-cargo.vue b/src/views/business/common-cargo.vue
index fe173a1..9ed40a1 100644
--- a/src/views/business/common-cargo.vue
+++ b/src/views/business/common-cargo.vue
@@ -204,7 +204,7 @@ import { exportBlob } from '@/api/common';
import { getDeptTree } from '@/api/system/dept';
import { config, excelOption, formatCargoValue, option } from '@/option/business/common-cargo';
import { getDictionary } from '@/api/system/dictbiz';
-import { getToken } from '@/utils/auth';
+import { getToken, isAdministrator } from '@/utils/auth';
import { openImportDialog } from '@/utils/import-excel';
import { downloadXls } from '@/utils/util';
import { mapGetters } from 'vuex';
@@ -250,10 +250,7 @@ export default {
};
},
isAdmin() {
- const authority = this.userInfo && this.userInfo.authority;
- return Array.isArray(authority)
- ? authority.includes('admin')
- : String(authority || '').includes('admin');
+ return isAdministrator(this.userInfo);
},
ids() {
return this.selectionList.map(item => item.id).join(',');
diff --git a/src/views/business/common-route.vue b/src/views/business/common-route.vue
index dec5955..9840ca8 100644
--- a/src/views/business/common-route.vue
+++ b/src/views/business/common-route.vue
@@ -321,7 +321,7 @@ import { exportBlob } from '@/api/common';
import { getDeptTree } from '@/api/system/dept';
import { addressTypeOptions } from '@/option/base/common-address';
import { config, excelOption, option } from '@/option/business/common-route';
-import { getToken } from '@/utils/auth';
+import { getToken, isAdministrator } from '@/utils/auth';
import { openImportDialog } from '@/utils/import-excel';
import { normalizeMapSearchResults, searchAmapPlaceText } from '@/utils/map-search';
import { downloadXls } from '@/utils/util';
@@ -390,10 +390,7 @@ export default {
};
},
isAdmin() {
- const authority = this.userInfo && this.userInfo.authority;
- return Array.isArray(authority)
- ? authority.includes('admin')
- : String(authority || '').includes('admin');
+ return isAdministrator(this.userInfo);
},
ids() {
return this.selectionList.map(item => item.id).join(',');
diff --git a/src/views/business/components/business-crud-page.vue b/src/views/business/components/business-crud-page.vue
index c0662dc..74613ad 100644
--- a/src/views/business/components/business-crud-page.vue
+++ b/src/views/business/components/business-crud-page.vue
@@ -5241,7 +5241,7 @@ import { getDictionary as getSystemDictionary } from '@/api/system/dict';
import { addressTypeOptions } from '@/option/base/common-address';
import { packageOptions } from '@/option/business/common';
import { formatUpdateUserName } from '@/utils/audit';
-import { getToken } from '@/utils/auth';
+import { getToken, isAdministrator } from '@/utils/auth';
import { openImportDialog } from '@/utils/import-excel';
import { normalizeMapSearchResults, searchAmapPlaceText } from '@/utils/map-search';
import { applyTableMenuWidth } from '@/utils/table-menu';
@@ -6348,10 +6348,7 @@ export default {
return this.currencyRemark(currency);
},
isAdmin() {
- const authority = this.userInfo && this.userInfo.authority;
- return Array.isArray(authority)
- ? authority.includes('admin')
- : String(authority || '').includes('admin');
+ return isAdministrator(this.userInfo);
},
canViewAllDept() {
return this.isAdmin;
diff --git a/src/views/business/components/shipping-template-page.vue b/src/views/business/components/shipping-template-page.vue
index cb5c60c..9226f36 100644
--- a/src/views/business/components/shipping-template-page.vue
+++ b/src/views/business/components/shipping-template-page.vue
@@ -1115,6 +1115,7 @@ import '@open-file-viewer/core/style.css';
import pdfWorkerSrc from 'pdfjs-dist/build/pdf.worker.mjs?url';
import { h, resolveComponent } from 'vue';
import { mapGetters } from 'vuex';
+import { isAdministrator } from '@/utils/auth';
const AMAP_KEY = '653b7cf105ad7fb8ec9b2f5198ade315';
const AMAP_SECURITY_CODE = '5aab65c632e48ebae0d0e28f5b28e21a';
@@ -1361,7 +1362,7 @@ export default {
},
isAdmin() {
return (
- String(this.userInfo?.authority || '').includes('admin') ||
+ isAdministrator(this.userInfo) ||
this.userInfo?.authority?.includes?.('admin')
);
},
diff --git a/src/views/business/components/transport-plan-page.vue b/src/views/business/components/transport-plan-page.vue
index da90dee..27e37f4 100644
--- a/src/views/business/components/transport-plan-page.vue
+++ b/src/views/business/components/transport-plan-page.vue
@@ -2740,7 +2740,7 @@ import { getDictionary as getSystemDictionary } from '@/api/system/dict';
import { addressTypeOptions } from '@/option/base/common-address';
import { packageOptions } from '@/option/business/common';
import { formatUpdateUserName } from '@/utils/audit';
-import { getToken } from '@/utils/auth';
+import { getToken, isAdministrator } from '@/utils/auth';
import { normalizeMapSearchResults, searchAmapPlaceText } from '@/utils/map-search';
import { applyTableMenuWidth } from '@/utils/table-menu';
import { downloadFileByUrl, downloadXls } from '@/utils/util';
@@ -3610,10 +3610,7 @@ export default {
return this.currencyRemark(value);
},
isAdmin() {
- const authority = this.userInfo && this.userInfo.authority;
- return Array.isArray(authority)
- ? authority.includes('admin')
- : String(authority || '').includes('admin');
+ return isAdministrator(this.userInfo);
},
canCreate() {
return this.hasPermission(`${this.config.permission}_add`);
diff --git a/src/views/business/components/waybill-manage-page.vue b/src/views/business/components/waybill-manage-page.vue
index b070975..818a229 100644
--- a/src/views/business/components/waybill-manage-page.vue
+++ b/src/views/business/components/waybill-manage-page.vue
@@ -3097,7 +3097,7 @@ import { getDictionary as getSystemDictionary } from '@/api/system/dict';
import { addressTypeOptions } from '@/option/base/common-address';
import { packageOptions } from '@/option/business/common';
import { formatUpdateUserName } from '@/utils/audit';
-import { getToken } from '@/utils/auth';
+import { getToken, isAdministrator } from '@/utils/auth';
import { openImportDialog } from '@/utils/import-excel';
import { normalizeMapSearchResults, searchAmapPlaceText } from '@/utils/map-search';
import { applyTableMenuWidth } from '@/utils/table-menu';
@@ -3837,10 +3837,7 @@ export default {
return this.currencyRemark(currency);
},
isAdmin() {
- const authority = this.userInfo && this.userInfo.authority;
- return Array.isArray(authority)
- ? authority.includes('admin')
- : String(authority || '').includes('admin');
+ return isAdministrator(this.userInfo);
},
canViewAllDept() {
return this.isAdmin;
diff --git a/src/views/business/contract-manage.vue b/src/views/business/contract-manage.vue
index e03a5fa..c3b48e7 100644
--- a/src/views/business/contract-manage.vue
+++ b/src/views/business/contract-manage.vue
@@ -1017,7 +1017,7 @@ import { getDeptTree } from '@/api/system/dept';
import { getDictionary as getSystemDictionary } from '@/api/system/dict';
import { getDictionary as getBizDictionary } from '@/api/system/dictbiz';
import { config, option } from '@/option/business/contract-manage';
-import { getToken } from '@/utils/auth';
+import { getToken, isAdministrator } from '@/utils/auth';
import { downloadFileByUrl, downloadXls } from '@/utils/util';
import { submitMkApprovalFlow } from '@/utils/mk-approval';
import BillingPlanEditor from './components/billing-plan-editor.vue';
@@ -1312,10 +1312,7 @@ export default {
return { addBtn: this.canCreate };
},
isAdmin() {
- const authority = this.userInfo?.authority;
- return Array.isArray(authority)
- ? authority.includes('admin')
- : String(authority || '').includes('admin');
+ return isAdministrator(this.userInfo);
},
canCreate() {
return this.hasPermission(`${this.config.permission}_add`);
diff --git a/src/views/business/loading-manage.vue b/src/views/business/loading-manage.vue
index 35085f3..363f972 100644
--- a/src/views/business/loading-manage.vue
+++ b/src/views/business/loading-manage.vue
@@ -345,6 +345,12 @@
+
{{ row.projectName || '-' }}
{{ timeRange(row) }}
{{ goodsSummary(row) }}
+ 创建人:{{ row.createUserName || '-' }}
+ 创建时间:{{ row.createTime || '-' }}
diff --git a/src/views/business/process-config.vue b/src/views/business/process-config.vue
index b75263d..05ef0be 100644
--- a/src/views/business/process-config.vue
+++ b/src/views/business/process-config.vue
@@ -416,7 +416,7 @@ import { getList as getProjectList } from '@/api/business/project-apply';
import { getDeptTree } from '@/api/system/dept';
import { exportBlob } from '@/api/common';
import { config, option } from '@/option/business/process-config';
-import { getToken } from '@/utils/auth';
+import { getToken, isAdministrator } from '@/utils/auth';
import { downloadXls } from '@/utils/util';
import { mapGetters } from 'vuex';
import NProgress from 'nprogress';
@@ -524,10 +524,7 @@ export default {
};
},
isAdmin() {
- const authority = this.userInfo && this.userInfo.authority;
- return Array.isArray(authority)
- ? authority.includes('admin')
- : String(authority || '').includes('admin');
+ return isAdministrator(this.userInfo);
},
ids() {
return this.selectionList.map(item => item.id).join(',');
diff --git a/src/views/business/project-apply.vue b/src/views/business/project-apply.vue
index a3437cc..0b4dc50 100644
--- a/src/views/business/project-apply.vue
+++ b/src/views/business/project-apply.vue
@@ -911,7 +911,7 @@ import { getDeptTree, getPlatformCompanySelect } from '@/api/system/dept';
import { getDictionary as getSystemDictionary } from '@/api/system/dict';
import { getDictionary as getBizDictionary } from '@/api/system/dictbiz';
import { getList as getUserList } from '@/api/system/user';
-import { getToken } from '@/utils/auth';
+import { getToken, isAdministrator } from '@/utils/auth';
import { downloadFileByUrl, downloadXls } from '@/utils/util';
import { getMKApprovalUrl } from '@/api/system/business-process';
import { loadMkEnabled, submitMkApprovalFlow } from '@/utils/mk-approval';
@@ -1286,10 +1286,7 @@ export default {
};
},
isAdmin() {
- const authority = this.userInfo && this.userInfo.authority;
- return Array.isArray(authority)
- ? authority.includes('admin')
- : String(authority || '').includes('admin');
+ return isAdministrator(this.userInfo);
},
canViewAllDept() {
return this.isAdmin;
diff --git a/src/views/business/temporary-credit-limit.vue b/src/views/business/temporary-credit-limit.vue
index 7c9cab1..0fdb589 100644
--- a/src/views/business/temporary-credit-limit.vue
+++ b/src/views/business/temporary-credit-limit.vue
@@ -309,7 +309,7 @@ import {
getList as getProjectList,
} from '@/api/business/project-apply';
import { config, option } from '@/option/business/temporary-credit-limit';
-import { getToken } from '@/utils/auth';
+import { getToken, isAdministrator } from '@/utils/auth';
import { downloadFileByUrl, downloadXls } from '@/utils/util';
import { ElImageViewer } from 'element-plus';
import { OpenFileViewer } from '@open-file-viewer/vue';
@@ -423,10 +423,7 @@ export default {
return String(width);
},
isAdmin() {
- const authority = this.userInfo?.authority;
- return Array.isArray(authority)
- ? authority.includes('admin')
- : String(authority || '').includes('admin');
+ return isAdministrator(this.userInfo);
},
canCreate() {
return this.hasPermission(`${this.config.permission}_add`);
diff --git a/src/views/business/voucher-manage-detail.vue b/src/views/business/voucher-manage-detail.vue
index 5b68a91..3d77c96 100644
--- a/src/views/business/voucher-manage-detail.vue
+++ b/src/views/business/voucher-manage-detail.vue
@@ -45,6 +45,7 @@ import { useStore } from 'vuex';
import { ElMessage, ElMessageBox } from 'element-plus';
import md5 from 'js-md5';
import * as api from '@/api/business/voucher-manage';
+import { isAdministrator } from '@/utils/auth';
const route = useRoute();
const router = useRouter();
@@ -52,9 +53,7 @@ const store = useStore();
const voucherId = route.query.id;
const isSuperAdmin = computed(() => {
const authority = store.getters.userInfo?.authority;
- return Array.isArray(authority)
- ? authority.includes('admin')
- : String(authority || '').includes('admin');
+ return isAdministrator({ authority });
});
const loading = ref(false), rows = ref([]), voucher = ref({ voucherBatchNo: route.query.batchNo || '' });
const page = reactive({ current: 1, size: 10, total: 0 });
diff --git a/src/views/business/voucher-manage.vue b/src/views/business/voucher-manage.vue
index ef6c6dd..522196e 100644
--- a/src/views/business/voucher-manage.vue
+++ b/src/views/business/voucher-manage.vue
@@ -101,7 +101,8 @@
prop="relatedWaybillCount"
label="凭证已关联数量"
width="125"
- />
+ />
+
store.getters.permission);
const userInfo = computed(() => store.getters.userInfo);
-const isAdmin = computed(() => userInfo.value?.authority?.includes('admin'));
+const isAdmin = computed(() => checkAdministrator(userInfo.value));
const hasPermission = code => {
if (isAdmin.value) return true;
return permission.value?.[code] === true;
diff --git a/src/views/payment/components/bill-payment-table.vue b/src/views/payment/components/bill-payment-table.vue
index 912f2cf..a88608a 100644
--- a/src/views/payment/components/bill-payment-table.vue
+++ b/src/views/payment/components/bill-payment-table.vue
@@ -115,6 +115,7 @@