✨ 列表导出补齐创建人创建时间,并修复组织类型提交

多模块列表与导出展示创建人、创建时间;组织类型强制提交数字编码,避免中文 dictKey 反序列化失败。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-09-30 14:22:39 +08:00
parent e5a7ad616c
commit 50c1afe9c8
87 changed files with 521 additions and 212 deletions
+7
View File
@@ -146,6 +146,13 @@ export const createOption = () => ({
showWordLimit: true, showWordLimit: true,
rules: [{ max: 200, message: '备注不能超过200个字', trigger: 'blur' }], rules: [{ max: 200, message: '备注不能超过200个字', trigger: 'blur' }],
}, },
{
label: '创建人',
prop: 'createUserName',
minWidth: 120,
addDisplay: false,
editDisplay: false,
},
{ {
label: '更新时间', label: '更新时间',
prop: 'updateTime', prop: 'updateTime',
+3 -3
View File
@@ -193,11 +193,11 @@ export const option = createCrudOption([
editDisplay: false, editDisplay: false,
}, },
...auditColumns ...auditColumns
.filter(column => ['updateTime', 'createTime'].includes(column.prop)) .filter(column => ['createUserName', 'createTime', 'updateTime'].includes(column.prop))
.sort( .sort(
(first, second) => (first, second) =>
['updateTime', 'createTime'].indexOf(first.prop) - ['createUserName', 'createTime', 'updateTime'].indexOf(first.prop) -
['updateTime', 'createTime'].indexOf(second.prop) ['createUserName', 'createTime', 'updateTime'].indexOf(second.prop)
), ),
// ---------- 表单隐藏字段 ---------- // ---------- 表单隐藏字段 ----------
+2 -3
View File
@@ -281,14 +281,13 @@ export const option = {
filterable: true, filterable: true,
}, },
...auditColumns ...auditColumns
.filter(column => column.prop !== 'createUserName')
.map(column => .map(column =>
['createTime', 'updateTime'].includes(column.prop) ? { ...column, minWidth: 190 } : column ['createTime', 'updateTime'].includes(column.prop) ? { ...column, minWidth: 190 } : column
) )
.sort( .sort(
(first, second) => (first, second) =>
['updateUserName', 'updateTime', 'createTime'].indexOf(first.prop) - ['createUserName', 'updateUserName', 'createTime', 'updateTime'].indexOf(first.prop) -
['updateUserName', 'updateTime', 'createTime'].indexOf(second.prop) ['createUserName', 'updateUserName', 'createTime', 'updateTime'].indexOf(second.prop)
), ),
]), ]),
dialogCustomClass: 'avue-dialog--common-route', dialogCustomClass: 'avue-dialog--common-route',
+8 -1
View File
@@ -532,6 +532,13 @@ export const option = createCrudOption([
order: 30, order: 30,
minWidth: 110, minWidth: 110,
}, },
{
label: '创建人',
prop: 'createUserName',
minWidth: 120,
addDisplay: false,
editDisplay: false,
},
{ {
label: '创建时间', label: '创建时间',
prop: 'createTime', prop: 'createTime',
@@ -730,7 +737,7 @@ export const option = createCrudOption([
labelWidth: 0, labelWidth: 0,
}, },
...auditColumns ...auditColumns
.filter(column => column.prop !== 'createTime') .filter(column => !['createTime', 'createUserName'].includes(column.prop))
.map(column => ({ ...column, hide: true })), .map(column => ({ ...column, hide: true })),
]); ]);
+1
View File
@@ -41,6 +41,7 @@ export const loadingManageConfig = {
{ prop: 'carrierName', label: '承运商' }, { prop: 'carrierName', label: '承运商' },
{ prop: 'transportType', label: '运输方式' }, { prop: 'transportType', label: '运输方式' },
{ prop: 'dataSource', label: '数据来源' }, { prop: 'dataSource', label: '数据来源' },
{ prop: 'createUserName', label: '创建人' },
{ prop: 'createTime', label: '创建时间' }, { prop: 'createTime', label: '创建时间' },
{ prop: 'updateTime', label: '更新时间' }, { prop: 'updateTime', label: '更新时间' },
{ prop: 'currentProcessNode', label: '过程节点' }, { prop: 'currentProcessNode', label: '过程节点' },
+3 -3
View File
@@ -112,12 +112,12 @@ export const option = {
editDisplay: false, editDisplay: false,
}, },
...auditColumns ...auditColumns
.filter(column => ['updateTime', 'createTime'].includes(column.prop)) .filter(column => ['createUserName', 'createTime', 'updateTime'].includes(column.prop))
.map(column => ({ ...column, minWidth: 190 })) .map(column => ({ ...column, minWidth: 190 }))
.sort( .sort(
(first, second) => (first, second) =>
['updateTime', 'createTime'].indexOf(first.prop) - ['createUserName', 'createTime', 'updateTime'].indexOf(first.prop) -
['updateTime', 'createTime'].indexOf(second.prop) ['createUserName', 'createTime', 'updateTime'].indexOf(second.prop)
), ),
{ {
label: '项目ID集合', label: '项目ID集合',
+5 -1
View File
@@ -452,5 +452,9 @@ export const option = createCrudOption([
span: 24, span: 24,
hide: true, hide: true,
}, },
...auditColumns.map(column => ({ ...column, hide: true })), ...auditColumns.map(column =>
['createUserName', 'createTime'].includes(column.prop)
? column
: { ...column, hide: true }
),
]); ]);
@@ -332,7 +332,11 @@ export const option = {
addDisplay: false, addDisplay: false,
editDisplay: false, editDisplay: false,
}, },
...auditColumns.map(column => ({ ...column, hide: true })), ...auditColumns.map(column =>
['createUserName', 'createTime'].includes(column.prop)
? column
: { ...column, hide: true }
),
])), ])),
dialogWidth: 1100, dialogWidth: 1100,
menuFixed: 'right', menuFixed: 'right',
+5 -1
View File
@@ -249,9 +249,10 @@ export const config = {
title: '其它信息', title: '其它信息',
fields: [ fields: [
['remark', '备注'], ['remark', '备注'],
['createUserName', '创建人'],
['createTime', '创建时间'],
['updateUserName', '更新人'], ['updateUserName', '更新人'],
['updateTime', '更新时间'], ['updateTime', '更新时间'],
['createTime', '创建时间'],
], ],
}, },
], ],
@@ -457,6 +458,9 @@ export const option = {
showWordLimit: true, showWordLimit: true,
rules: textRule('备注', 200), rules: textRule('备注', 200),
}, },
{
...auditColumn('createUserName'),
},
{ {
...auditColumn('updateUserName'), ...auditColumn('updateUserName'),
}, },
+3
View File
@@ -883,6 +883,9 @@ export const option = {
viewDisplay: false, viewDisplay: false,
display: false, display: false,
}, },
{
...auditColumn('createUserName'),
},
{ {
...auditColumn('createTime'), ...auditColumn('createTime'),
}, },
+17
View File
@@ -125,6 +125,23 @@ export const option = {
slot: true, slot: true,
minWidth: 160, 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: '准驾车型', label: '准驾车型',
prop: 'drivingType', prop: 'drivingType',
@@ -91,6 +91,23 @@ export const option = {
minWidth: 140, minWidth: 140,
align: 'center', 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: '', label: '',
prop: 'expireStatus', prop: 'expireStatus',
@@ -151,6 +151,23 @@ export const option = {
minWidth: 130, minWidth: 130,
align: 'center', 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: '', label: '',
prop: 'expireStatus', prop: 'expireStatus',
+10
View File
@@ -209,6 +209,14 @@ export const option = {
editDisplay: false, editDisplay: false,
viewDisplay: false, viewDisplay: false,
}, },
{
label: '创建人',
prop: 'createUserName',
addDisplay: false,
editDisplay: false,
display: false,
minWidth: 120,
},
{ {
label: '创建时间', label: '创建时间',
prop: 'createTime', prop: 'createTime',
@@ -286,6 +294,8 @@ export const exportColumns = [
{ prop: 'insuranceClaimAmount', label: '保险理赔金额' }, { prop: 'insuranceClaimAmount', label: '保险理赔金额' },
{ prop: 'accidentReasonDamage', label: '事故原因及损坏情况' }, { prop: 'accidentReasonDamage', label: '事故原因及损坏情况' },
{ prop: 'remark', label: '备注' }, { prop: 'remark', label: '备注' },
{ prop: 'createUserName', label: '创建人' },
{ prop: 'createTime', label: '创建时间' },
]; ];
export const excelOption = { export const excelOption = {
@@ -210,6 +210,14 @@ export const option = {
editDisplay: false, editDisplay: false,
viewDisplay: false, viewDisplay: false,
}, },
{
label: '创建人',
prop: 'createUserName',
addDisplay: false,
editDisplay: false,
display: false,
minWidth: 120,
},
{ {
label: '创建时间', label: '创建时间',
prop: 'createTime', prop: 'createTime',
@@ -286,6 +294,8 @@ export const exportColumns = [
{ prop: 'fee', label: '费用(元)' }, { prop: 'fee', label: '费用(元)' },
{ prop: 'assessmentUnit', label: '评定(复核)单位' }, { prop: 'assessmentUnit', label: '评定(复核)单位' },
{ prop: 'remark', label: '备注' }, { prop: 'remark', label: '备注' },
{ prop: 'createUserName', label: '创建人' },
{ prop: 'createTime', label: '创建时间' },
]; ];
export const excelOption = { export const excelOption = {
+11
View File
@@ -147,6 +147,15 @@ export const option = {
viewDisplay: false, viewDisplay: false,
minWidth: 170, minWidth: 170,
}, },
{
label: '创建人',
prop: 'createUserName',
display: false,
addDisplay: false,
editDisplay: false,
viewDisplay: false,
minWidth: 120,
},
{ {
label: '创建时间', label: '创建时间',
prop: 'createTime', prop: 'createTime',
@@ -224,6 +233,8 @@ export const exportColumns = [
{ prop: 'specificationModel', label: '规格型号' }, { prop: 'specificationModel', label: '规格型号' },
{ prop: 'remark', label: '备注' }, { prop: 'remark', label: '备注' },
{ prop: 'originalEquipmentNo', label: '原厂设备号' }, { prop: 'originalEquipmentNo', label: '原厂设备号' },
{ prop: 'createUserName', label: '创建人' },
{ prop: 'createTime', label: '创建时间' },
]; ];
export const excelOption = { export const excelOption = {
+10
View File
@@ -172,6 +172,14 @@ export const option = {
editDisplay: false, editDisplay: false,
viewDisplay: false, viewDisplay: false,
}, },
{
label: '创建人',
prop: 'createUserName',
addDisplay: false,
editDisplay: false,
display: false,
minWidth: 120,
},
{ {
label: '创建时间', label: '创建时间',
prop: 'createTime', prop: 'createTime',
@@ -218,6 +226,8 @@ export const exportColumns = [
{ prop: 'exitStation', label: '出口站' }, { prop: 'exitStation', label: '出口站' },
{ prop: 'dataSource', label: '数据来源' }, { prop: 'dataSource', label: '数据来源' },
{ prop: 'remark', label: '备注' }, { prop: 'remark', label: '备注' },
{ prop: 'createUserName', label: '创建人' },
{ prop: 'createTime', label: '创建时间' },
]; ];
export const excelOption = { export const excelOption = {
+10
View File
@@ -182,6 +182,14 @@ export const option = {
hide: true, hide: true,
rules: [{ max: 200, message: '备注最多 200 个字', trigger: 'blur' }], rules: [{ max: 200, message: '备注最多 200 个字', trigger: 'blur' }],
}, },
{
label: '创建人',
prop: 'createUserName',
addDisplay: false,
editDisplay: false,
display: false,
minWidth: 120,
},
{ {
label: '创建时间', label: '创建时间',
prop: 'createTime', prop: 'createTime',
@@ -260,6 +268,8 @@ export const exportColumns = [
{ prop: 'invoiceNo', label: '发票号' }, { prop: 'invoiceNo', label: '发票号' },
{ prop: 'invoiceDate', label: '开票日期' }, { prop: 'invoiceDate', label: '开票日期' },
{ prop: 'remark', label: '备注' }, { prop: 'remark', label: '备注' },
{ prop: 'createUserName', label: '创建人' },
{ prop: 'createTime', label: '创建时间' },
]; ];
export const excelOption = { export const excelOption = {
+10
View File
@@ -140,6 +140,14 @@ export const option = {
editDisplay: false, editDisplay: false,
viewDisplay: false, viewDisplay: false,
}, },
{
label: '创建人',
prop: 'createUserName',
addDisplay: false,
editDisplay: false,
display: false,
minWidth: 120,
},
{ {
label: '创建时间', label: '创建时间',
prop: 'createTime', prop: 'createTime',
@@ -215,6 +223,8 @@ export const exportColumns = [
{ prop: 'monthlyMileage', label: '本月行驶里程数' }, { prop: 'monthlyMileage', label: '本月行驶里程数' },
{ prop: 'totalMileage', label: '累计行驶里程数' }, { prop: 'totalMileage', label: '累计行驶里程数' },
{ prop: 'remark', label: '备注' }, { prop: 'remark', label: '备注' },
{ prop: 'createUserName', label: '创建人' },
{ prop: 'createTime', label: '创建时间' },
]; ];
export const excelOption = { export const excelOption = {
+10
View File
@@ -232,6 +232,14 @@ export const option = {
editDisplay: false, editDisplay: false,
viewDisplay: false, viewDisplay: false,
}, },
{
label: '创建人',
prop: 'createUserName',
addDisplay: false,
editDisplay: false,
display: false,
minWidth: 120,
},
{ {
label: '创建时间', label: '创建时间',
prop: 'createTime', prop: 'createTime',
@@ -311,6 +319,8 @@ export const exportColumns = [
{ prop: 'balance', label: '余额' }, { prop: 'balance', label: '余额' },
{ prop: 'station', label: '站点' }, { prop: 'station', label: '站点' },
{ prop: 'remark', label: '备注' }, { prop: 'remark', label: '备注' },
{ prop: 'createUserName', label: '创建人' },
{ prop: 'createTime', label: '创建时间' },
]; ];
export const excelOption = { export const excelOption = {
@@ -165,6 +165,14 @@ export const option = {
editDisplay: false, editDisplay: false,
viewDisplay: false, viewDisplay: false,
}, },
{
label: '创建人',
prop: 'createUserName',
addDisplay: false,
editDisplay: false,
display: false,
minWidth: 120,
},
{ {
label: '创建时间', label: '创建时间',
prop: 'createTime', prop: 'createTime',
@@ -209,6 +217,8 @@ export const exportColumns = [
{ prop: 'amount', label: '金额' }, { prop: 'amount', label: '金额' },
{ prop: 'dataSource', label: '数据来源' }, { prop: 'dataSource', label: '数据来源' },
{ prop: 'remark', label: '备注' }, { prop: 'remark', label: '备注' },
{ prop: 'createUserName', label: '创建人' },
{ prop: 'createTime', label: '创建时间' },
]; ];
export const excelOption = { export const excelOption = {
@@ -147,6 +147,14 @@ export const option = {
slot: true, slot: true,
formslot: true, formslot: true,
}, },
{
label: '创建人',
prop: 'createUserName',
addDisplay: false,
editDisplay: false,
display: false,
minWidth: 120,
},
{ {
label: '创建时间', label: '创建时间',
prop: 'createTime', prop: 'createTime',
@@ -222,6 +230,8 @@ export const exportColumns = [
{ prop: 'replacementCost', label: '换胎费用' }, { prop: 'replacementCost', label: '换胎费用' },
{ prop: 'replacementDescription', label: '换胎说明' }, { prop: 'replacementDescription', label: '换胎说明' },
{ prop: 'remark', label: '备注' }, { prop: 'remark', label: '备注' },
{ prop: 'createUserName', label: '创建人' },
{ prop: 'createTime', label: '创建时间' },
]; ];
export const excelOption = { export const excelOption = {
@@ -97,6 +97,14 @@ export const option = {
slot: true, slot: true,
formslot: true, formslot: true,
}, },
{
label: '创建人',
prop: 'createUserName',
addDisplay: false,
editDisplay: false,
display: false,
minWidth: 120,
},
{ {
label: '创建时间', label: '创建时间',
prop: 'createTime', prop: 'createTime',
@@ -169,6 +177,8 @@ export const exportColumns = [
{ prop: 'changeItem', label: '变更事项' }, { prop: 'changeItem', label: '变更事项' },
{ prop: 'changeContent', label: '变更内容' }, { prop: 'changeContent', label: '变更内容' },
{ prop: 'remark', label: '备注' }, { prop: 'remark', label: '备注' },
{ prop: 'createUserName', label: '创建人' },
{ prop: 'createTime', label: '创建时间' },
]; ];
export const excelOption = { export const excelOption = {
+10
View File
@@ -221,6 +221,14 @@ export const option = {
slot: true, slot: true,
formslot: true, formslot: true,
}, },
{
label: '创建人',
prop: 'createUserName',
addDisplay: false,
editDisplay: false,
display: false,
minWidth: 120,
},
{ {
label: '创建时间', label: '创建时间',
prop: 'createTime', prop: 'createTime',
@@ -299,6 +307,8 @@ export const exportColumns = [
{ prop: 'processStatus', label: '状态' }, { prop: 'processStatus', label: '状态' },
{ prop: 'processDescription', label: '过程描述' }, { prop: 'processDescription', label: '过程描述' },
{ prop: 'processResult', label: '处理结果' }, { prop: 'processResult', label: '处理结果' },
{ prop: 'createUserName', label: '创建人' },
{ prop: 'createTime', label: '创建时间' },
]; ];
export const excelOption = { export const excelOption = {
+4
View File
@@ -1,8 +1,12 @@
import { isAdministrator as checkAdministrator } from '@/utils/auth';
const getters = { const getters = {
tag: state => state.tags.tag, tag: state => state.tags.tag,
language: state => state.common.language, language: state => state.common.language,
setting: state => state.common.setting, setting: state => state.common.setting,
userInfo: state => state.user.userInfo, userInfo: state => state.user.userInfo,
// 超级管理员:角色别名中包含 administrator
isAdministrator: state => checkAdministrator(state.user.userInfo),
colorName: state => state.common.colorName, colorName: state => state.common.colorName,
themeName: state => state.common.themeName, themeName: state => state.common.themeName,
isMacOs: (state, getters) => getters.themeName === 'mac-os', isMacOs: (state, getters) => getters.themeName === 'mac-os',
+24 -1
View File
@@ -6,8 +6,31 @@ const RefreshTokenKey = website.refreshTokenKey;
const SessionId = 'JSESSIONID'; const SessionId = 'JSESSIONID';
const UserId = 'b-user-id'; 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() { export function getToken() {
return Cookies.get(TokenKey); return Cookies.get(TokenKey);
} }
export function setToken(token) { export function setToken(token) {
+5 -5
View File
@@ -24,7 +24,7 @@
type="danger" type="danger"
icon="el-icon-delete" icon="el-icon-delete"
plain plain
v-if="userInfo.authority.includes('admin')" v-if="isAdministrator"
@click="handleDelete" @click="handleDelete"
>删除 >删除
</el-button> </el-button>
@@ -43,19 +43,19 @@
<template #menu="{ row }"> <template #menu="{ row }">
<el-link <el-link
type="primary" type="primary"
v-if="row.status === -1 && userInfo.authority.includes('admin')" v-if="row.status === -1 && isAdministrator"
@click.stop="handleEnable(row)" @click.stop="handleEnable(row)"
>启用 >启用
</el-link> </el-link>
<el-link <el-link
type="primary" type="primary"
v-if="row.status === 1 && userInfo.authority.includes('admin')" v-if="row.status === 1 && isAdministrator"
@click.stop="handleDisable(row)" @click.stop="handleDisable(row)"
>禁用 >禁用
</el-link> </el-link>
<el-link <el-link
type="primary" type="primary"
v-if="userInfo.authority.includes('admin')" v-if="isAdministrator"
@click.stop="handleRowLog(row)" @click.stop="handleRowLog(row)"
>日志 >日志
</el-link> </el-link>
@@ -522,7 +522,7 @@ sortable: true, span: 24, width: 180 },
}; };
}, },
computed: { computed: {
...mapGetters(['userInfo']), ...mapGetters(['userInfo', 'isAdministrator']),
ids() { ids() {
let ids = []; let ids = [];
this.selectionList.forEach(ele => { this.selectionList.forEach(ele => {
+5 -5
View File
@@ -24,7 +24,7 @@
type="danger" type="danger"
icon="el-icon-delete" icon="el-icon-delete"
plain plain
v-if="userInfo.authority.includes('administrator')" v-if="isAdministrator"
@click="handleDelete" @click="handleDelete"
>删除 >删除
</el-button> </el-button>
@@ -54,19 +54,19 @@
<template #menu="{ row }"> <template #menu="{ row }">
<el-link <el-link
type="primary" type="primary"
v-if="row.status !== 1 && userInfo.authority.includes('administrator')" v-if="row.status !== 1 && isAdministrator"
@click.stop="handleEnable(row)" @click.stop="handleEnable(row)"
>启用 >启用
</el-link> </el-link>
<el-link <el-link
type="primary" type="primary"
v-if="row.status === 1 && userInfo.authority.includes('administrator')" v-if="row.status === 1 && isAdministrator"
@click.stop="handleDisable(row)" @click.stop="handleDisable(row)"
>禁用 >禁用
</el-link> </el-link>
<el-link <el-link
type="primary" type="primary"
v-if="userInfo.authority.includes('administrator')" v-if="isAdministrator"
@click.stop="handleRowLog(row)" @click.stop="handleRowLog(row)"
>日志 >日志
</el-link> </el-link>
@@ -401,7 +401,7 @@ sortable: true, span: 24, width: 170 },
}; };
}, },
computed: { computed: {
...mapGetters(['userInfo']), ...mapGetters(['userInfo', 'isAdministrator']),
ids() { ids() {
let ids = []; let ids = [];
this.selectionList.forEach(ele => { this.selectionList.forEach(ele => {
+3 -3
View File
@@ -31,7 +31,7 @@
<el-button <el-button
icon="el-icon-setting" icon="el-icon-setting"
@click="handleRole" @click="handleRole"
v-if="userInfo.authority.includes('admin')" v-if="isAdministrator"
plain plain
>权限设置 >权限设置
</el-button> </el-button>
@@ -39,7 +39,7 @@
<template #menu="{ row }"> <template #menu="{ row }">
<el-link <el-link
type="primary" type="primary"
v-if="userInfo.authority.includes('admin')" v-if="isAdministrator"
style="border: 0; background-color: transparent !important" style="border: 0; background-color: transparent !important"
@click.stop="handleRowRole(row)" @click.stop="handleRowRole(row)"
>权限设置 >权限设置
@@ -354,7 +354,7 @@ export default {
}; };
}, },
computed: { computed: {
...mapGetters(['userInfo', 'permission']), ...mapGetters(['userInfo', 'permission', 'isAdministrator']),
permissionList() { permissionList() {
return { return {
addBtn: this.validData(this.permission.role_add, false), addBtn: this.validData(this.permission.role_add, false),
+9 -5
View File
@@ -150,7 +150,7 @@ import { mapGetters } from 'vuex';
import { downloadXls } from '@/utils/util'; import { downloadXls } from '@/utils/util';
import { openImportDialog } from '@/utils/import-excel'; import { openImportDialog } from '@/utils/import-excel';
import { formatUpdateUserName } from '@/utils/audit'; import { formatUpdateUserName } from '@/utils/audit';
import { getToken } from '@/utils/auth'; import { getToken, isAdministrator } from '@/utils/auth';
import { getCoordinateValidationMessage, normalizeCoordinateInput } from '@/utils/coordinate'; import { getCoordinateValidationMessage, normalizeCoordinateInput } from '@/utils/coordinate';
import AddressMapPicker from '@/components/address-map-picker/main.vue'; import AddressMapPicker from '@/components/address-map-picker/main.vue';
import NProgress from 'nprogress'; import NProgress from 'nprogress';
@@ -460,6 +460,13 @@ export default {
showWordLimit: true, showWordLimit: true,
rules: [{ max: 200, message: '备注不能超过200字', trigger: 'blur' }], rules: [{ max: 200, message: '备注不能超过200字', trigger: 'blur' }],
}, },
{
label: '创建人',
prop: 'createUserName',
addDisplay: false,
editDisplay: false,
minWidth: 120,
},
{ {
label: '更新人', label: '更新人',
prop: 'updateUserName', prop: 'updateUserName',
@@ -548,10 +555,7 @@ export default {
}; };
}, },
isAdmin() { isAdmin() {
const authority = this.userInfo && this.userInfo.authority; return isAdministrator(this.userInfo);
return Array.isArray(authority)
? authority.includes('admin')
: String(authority || '').includes('admin');
}, },
ids() { ids() {
let ids = []; let ids = [];
+2 -5
View File
@@ -269,7 +269,7 @@ import { exportBlob } from '@/api/common';
import { createOption } from '@/option/base/common-address'; import { createOption } from '@/option/base/common-address';
import { mapGetters } from 'vuex'; import { mapGetters } from 'vuex';
import { downloadXls } from '@/utils/util'; import { downloadXls } from '@/utils/util';
import { getToken } from '@/utils/auth'; import { getToken, isAdministrator } from '@/utils/auth';
import { normalizeMapSearchResults, searchAmapPlaceText } from '@/utils/map-search'; import { normalizeMapSearchResults, searchAmapPlaceText } from '@/utils/map-search';
import { isMobile } from '@/utils/validate'; import { isMobile } from '@/utils/validate';
import NProgress from 'nprogress'; import NProgress from 'nprogress';
@@ -324,10 +324,7 @@ export default {
}; };
}, },
isAdmin() { isAdmin() {
const authority = this.userInfo && this.userInfo.authority; return isAdministrator(this.userInfo);
return Array.isArray(authority)
? authority.includes('admin')
: String(authority || '').includes('admin');
}, },
ids() { ids() {
return this.selectionList.map(item => item.id).join(','); return this.selectionList.map(item => item.id).join(',');
+7
View File
@@ -238,6 +238,13 @@ export default {
value: 'value', value: 'value',
}, },
}, },
{
label: '创建人',
prop: 'createUserName',
minWidth: 120,
addDisplay: false,
editDisplay: false,
},
{ {
label: '更新人', label: '更新人',
prop: 'updateUserName', prop: 'updateUserName',
+2 -1
View File
@@ -143,6 +143,7 @@
import { mapGetters } from 'vuex'; import { mapGetters } from 'vuex';
import { getDetail, getList, remove, submit } from '@/api/base/insurance-ocr-template'; import { getDetail, getList, remove, submit } from '@/api/base/insurance-ocr-template';
import SectionCard from '@/components/section-card/main.vue'; import SectionCard from '@/components/section-card/main.vue';
import { isAdministrator } from '@/utils/auth';
const insuranceFieldKeys = [ const insuranceFieldKeys = [
'保险类型', '保险类型',
@@ -203,7 +204,7 @@ export default {
computed: { computed: {
...mapGetters(['permission', 'userInfo']), ...mapGetters(['permission', 'userInfo']),
isAdmin() { isAdmin() {
return String(this.userInfo.authority || '').includes('admin'); return isAdministrator(this.userInfo);
}, },
selectionIds() { selectionIds() {
return this.selectionList.map(item => item.id).join(','); return this.selectionList.map(item => item.id).join(',');
+2 -1
View File
@@ -82,6 +82,7 @@
import { mapGetters } from 'vuex'; import { mapGetters } from 'vuex';
import { changeStatus, getDetail, getList, remove, submit } from '@/api/base/measurement-unit'; import { changeStatus, getDetail, getList, remove, submit } from '@/api/base/measurement-unit';
import { createOption } from '@/option/base/measurement-unit'; import { createOption } from '@/option/base/measurement-unit';
import { isAdministrator } from '@/utils/auth';
export default { export default {
data() { data() {
@@ -111,7 +112,7 @@ export default {
return this.selectionList.map(item => item.id).join(','); return this.selectionList.map(item => item.id).join(',');
}, },
isAdmin() { isAdmin() {
return String(this.userInfo?.authority || '').includes('admin'); return isAdministrator(this.userInfo);
}, },
}, },
methods: { methods: {
+9 -5
View File
@@ -270,7 +270,7 @@ import { mapGetters } from 'vuex';
import { downloadXls } from '@/utils/util'; import { downloadXls } from '@/utils/util';
import { openImportDialog } from '@/utils/import-excel'; import { openImportDialog } from '@/utils/import-excel';
import { formatUpdateUserName } from '@/utils/audit'; import { formatUpdateUserName } from '@/utils/audit';
import { getToken } from '@/utils/auth'; import { getToken, isAdministrator } from '@/utils/auth';
import { getCoordinateValidationMessage, normalizeCoordinateInput } from '@/utils/coordinate'; import { getCoordinateValidationMessage, normalizeCoordinateInput } from '@/utils/coordinate';
import AddressMapPicker from '@/components/address-map-picker/main.vue'; import AddressMapPicker from '@/components/address-map-picker/main.vue';
import NProgress from 'nprogress'; import NProgress from 'nprogress';
@@ -621,6 +621,13 @@ export default {
showWordLimit: true, showWordLimit: true,
rules: [{ max: 200, message: '备注不能超过200个字', trigger: 'blur' }], rules: [{ max: 200, message: '备注不能超过200个字', trigger: 'blur' }],
}, },
{
label: '创建人',
prop: 'createUserName',
addDisplay: false,
editDisplay: false,
minWidth: 120,
},
{ {
label: '更新人', label: '更新人',
prop: 'updateUserName', prop: 'updateUserName',
@@ -708,10 +715,7 @@ export default {
}; };
}, },
isAdmin() { isAdmin() {
const authority = this.userInfo && this.userInfo.authority; return isAdministrator(this.userInfo);
return Array.isArray(authority)
? authority.includes('admin')
: String(authority || '').includes('admin');
}, },
isParentRegionLocked() { isParentRegionLocked() {
return this.form.category === '码头'; return this.form.category === '码头';
+9 -5
View File
@@ -150,7 +150,7 @@ import { mapGetters } from 'vuex';
import { downloadXls } from '@/utils/util'; import { downloadXls } from '@/utils/util';
import { openImportDialog } from '@/utils/import-excel'; import { openImportDialog } from '@/utils/import-excel';
import { formatUpdateUserName } from '@/utils/audit'; import { formatUpdateUserName } from '@/utils/audit';
import { getToken } from '@/utils/auth'; import { getToken, isAdministrator } from '@/utils/auth';
import { getCoordinateValidationMessage, normalizeCoordinateInput } from '@/utils/coordinate'; import { getCoordinateValidationMessage, normalizeCoordinateInput } from '@/utils/coordinate';
import AddressMapPicker from '@/components/address-map-picker/main.vue'; import AddressMapPicker from '@/components/address-map-picker/main.vue';
import NProgress from 'nprogress'; import NProgress from 'nprogress';
@@ -433,6 +433,13 @@ export default {
showWordLimit: true, showWordLimit: true,
rules: [{ max: 200, message: '备注不能超过200字', trigger: 'blur' }], rules: [{ max: 200, message: '备注不能超过200字', trigger: 'blur' }],
}, },
{
label: '创建人',
prop: 'createUserName',
addDisplay: false,
editDisplay: false,
minWidth: 120,
},
{ {
label: '更新人', label: '更新人',
prop: 'updateUserName', prop: 'updateUserName',
@@ -519,10 +526,7 @@ export default {
}; };
}, },
isAdmin() { isAdmin() {
const authority = this.userInfo && this.userInfo.authority; return isAdministrator(this.userInfo);
return Array.isArray(authority)
? authority.includes('admin')
: String(authority || '').includes('admin');
}, },
ids() { ids() {
let ids = []; let ids = [];
+2 -5
View File
@@ -204,7 +204,7 @@ import { exportBlob } from '@/api/common';
import { getDeptTree } from '@/api/system/dept'; import { getDeptTree } from '@/api/system/dept';
import { config, excelOption, formatCargoValue, option } from '@/option/business/common-cargo'; import { config, excelOption, formatCargoValue, option } from '@/option/business/common-cargo';
import { getDictionary } from '@/api/system/dictbiz'; import { getDictionary } from '@/api/system/dictbiz';
import { getToken } from '@/utils/auth'; import { getToken, isAdministrator } from '@/utils/auth';
import { openImportDialog } from '@/utils/import-excel'; import { openImportDialog } from '@/utils/import-excel';
import { downloadXls } from '@/utils/util'; import { downloadXls } from '@/utils/util';
import { mapGetters } from 'vuex'; import { mapGetters } from 'vuex';
@@ -250,10 +250,7 @@ export default {
}; };
}, },
isAdmin() { isAdmin() {
const authority = this.userInfo && this.userInfo.authority; return isAdministrator(this.userInfo);
return Array.isArray(authority)
? authority.includes('admin')
: String(authority || '').includes('admin');
}, },
ids() { ids() {
return this.selectionList.map(item => item.id).join(','); return this.selectionList.map(item => item.id).join(',');
+2 -5
View File
@@ -321,7 +321,7 @@ import { exportBlob } from '@/api/common';
import { getDeptTree } from '@/api/system/dept'; import { getDeptTree } from '@/api/system/dept';
import { addressTypeOptions } from '@/option/base/common-address'; import { addressTypeOptions } from '@/option/base/common-address';
import { config, excelOption, option } from '@/option/business/common-route'; 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 { openImportDialog } from '@/utils/import-excel';
import { normalizeMapSearchResults, searchAmapPlaceText } from '@/utils/map-search'; import { normalizeMapSearchResults, searchAmapPlaceText } from '@/utils/map-search';
import { downloadXls } from '@/utils/util'; import { downloadXls } from '@/utils/util';
@@ -390,10 +390,7 @@ export default {
}; };
}, },
isAdmin() { isAdmin() {
const authority = this.userInfo && this.userInfo.authority; return isAdministrator(this.userInfo);
return Array.isArray(authority)
? authority.includes('admin')
: String(authority || '').includes('admin');
}, },
ids() { ids() {
return this.selectionList.map(item => item.id).join(','); return this.selectionList.map(item => item.id).join(',');
@@ -5241,7 +5241,7 @@ import { getDictionary as getSystemDictionary } from '@/api/system/dict';
import { addressTypeOptions } from '@/option/base/common-address'; import { addressTypeOptions } from '@/option/base/common-address';
import { packageOptions } from '@/option/business/common'; import { packageOptions } from '@/option/business/common';
import { formatUpdateUserName } from '@/utils/audit'; import { formatUpdateUserName } from '@/utils/audit';
import { getToken } from '@/utils/auth'; import { getToken, isAdministrator } from '@/utils/auth';
import { openImportDialog } from '@/utils/import-excel'; import { openImportDialog } from '@/utils/import-excel';
import { normalizeMapSearchResults, searchAmapPlaceText } from '@/utils/map-search'; import { normalizeMapSearchResults, searchAmapPlaceText } from '@/utils/map-search';
import { applyTableMenuWidth } from '@/utils/table-menu'; import { applyTableMenuWidth } from '@/utils/table-menu';
@@ -6348,10 +6348,7 @@ export default {
return this.currencyRemark(currency); return this.currencyRemark(currency);
}, },
isAdmin() { isAdmin() {
const authority = this.userInfo && this.userInfo.authority; return isAdministrator(this.userInfo);
return Array.isArray(authority)
? authority.includes('admin')
: String(authority || '').includes('admin');
}, },
canViewAllDept() { canViewAllDept() {
return this.isAdmin; return this.isAdmin;
@@ -1115,6 +1115,7 @@ import '@open-file-viewer/core/style.css';
import pdfWorkerSrc from 'pdfjs-dist/build/pdf.worker.mjs?url'; import pdfWorkerSrc from 'pdfjs-dist/build/pdf.worker.mjs?url';
import { h, resolveComponent } from 'vue'; import { h, resolveComponent } from 'vue';
import { mapGetters } from 'vuex'; import { mapGetters } from 'vuex';
import { isAdministrator } from '@/utils/auth';
const AMAP_KEY = '653b7cf105ad7fb8ec9b2f5198ade315'; const AMAP_KEY = '653b7cf105ad7fb8ec9b2f5198ade315';
const AMAP_SECURITY_CODE = '5aab65c632e48ebae0d0e28f5b28e21a'; const AMAP_SECURITY_CODE = '5aab65c632e48ebae0d0e28f5b28e21a';
@@ -1361,7 +1362,7 @@ export default {
}, },
isAdmin() { isAdmin() {
return ( return (
String(this.userInfo?.authority || '').includes('admin') || isAdministrator(this.userInfo) ||
this.userInfo?.authority?.includes?.('admin') this.userInfo?.authority?.includes?.('admin')
); );
}, },
@@ -2740,7 +2740,7 @@ import { getDictionary as getSystemDictionary } from '@/api/system/dict';
import { addressTypeOptions } from '@/option/base/common-address'; import { addressTypeOptions } from '@/option/base/common-address';
import { packageOptions } from '@/option/business/common'; import { packageOptions } from '@/option/business/common';
import { formatUpdateUserName } from '@/utils/audit'; import { formatUpdateUserName } from '@/utils/audit';
import { getToken } from '@/utils/auth'; import { getToken, isAdministrator } from '@/utils/auth';
import { normalizeMapSearchResults, searchAmapPlaceText } from '@/utils/map-search'; import { normalizeMapSearchResults, searchAmapPlaceText } from '@/utils/map-search';
import { applyTableMenuWidth } from '@/utils/table-menu'; import { applyTableMenuWidth } from '@/utils/table-menu';
import { downloadFileByUrl, downloadXls } from '@/utils/util'; import { downloadFileByUrl, downloadXls } from '@/utils/util';
@@ -3610,10 +3610,7 @@ export default {
return this.currencyRemark(value); return this.currencyRemark(value);
}, },
isAdmin() { isAdmin() {
const authority = this.userInfo && this.userInfo.authority; return isAdministrator(this.userInfo);
return Array.isArray(authority)
? authority.includes('admin')
: String(authority || '').includes('admin');
}, },
canCreate() { canCreate() {
return this.hasPermission(`${this.config.permission}_add`); return this.hasPermission(`${this.config.permission}_add`);
@@ -3097,7 +3097,7 @@ import { getDictionary as getSystemDictionary } from '@/api/system/dict';
import { addressTypeOptions } from '@/option/base/common-address'; import { addressTypeOptions } from '@/option/base/common-address';
import { packageOptions } from '@/option/business/common'; import { packageOptions } from '@/option/business/common';
import { formatUpdateUserName } from '@/utils/audit'; import { formatUpdateUserName } from '@/utils/audit';
import { getToken } from '@/utils/auth'; import { getToken, isAdministrator } from '@/utils/auth';
import { openImportDialog } from '@/utils/import-excel'; import { openImportDialog } from '@/utils/import-excel';
import { normalizeMapSearchResults, searchAmapPlaceText } from '@/utils/map-search'; import { normalizeMapSearchResults, searchAmapPlaceText } from '@/utils/map-search';
import { applyTableMenuWidth } from '@/utils/table-menu'; import { applyTableMenuWidth } from '@/utils/table-menu';
@@ -3837,10 +3837,7 @@ export default {
return this.currencyRemark(currency); return this.currencyRemark(currency);
}, },
isAdmin() { isAdmin() {
const authority = this.userInfo && this.userInfo.authority; return isAdministrator(this.userInfo);
return Array.isArray(authority)
? authority.includes('admin')
: String(authority || '').includes('admin');
}, },
canViewAllDept() { canViewAllDept() {
return this.isAdmin; return this.isAdmin;
+2 -5
View File
@@ -1017,7 +1017,7 @@ import { getDeptTree } from '@/api/system/dept';
import { getDictionary as getSystemDictionary } from '@/api/system/dict'; import { getDictionary as getSystemDictionary } from '@/api/system/dict';
import { getDictionary as getBizDictionary } from '@/api/system/dictbiz'; import { getDictionary as getBizDictionary } from '@/api/system/dictbiz';
import { config, option } from '@/option/business/contract-manage'; 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 { downloadFileByUrl, downloadXls } from '@/utils/util';
import { submitMkApprovalFlow } from '@/utils/mk-approval'; import { submitMkApprovalFlow } from '@/utils/mk-approval';
import BillingPlanEditor from './components/billing-plan-editor.vue'; import BillingPlanEditor from './components/billing-plan-editor.vue';
@@ -1312,10 +1312,7 @@ export default {
return { addBtn: this.canCreate }; return { addBtn: this.canCreate };
}, },
isAdmin() { isAdmin() {
const authority = this.userInfo?.authority; return isAdministrator(this.userInfo);
return Array.isArray(authority)
? authority.includes('admin')
: String(authority || '').includes('admin');
}, },
canCreate() { canCreate() {
return this.hasPermission(`${this.config.permission}_add`); return this.hasPermission(`${this.config.permission}_add`);
+6
View File
@@ -345,6 +345,12 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="数据来源" prop="dataSource" min-width="130" show-overflow-tooltip /> <el-table-column label="数据来源" prop="dataSource" min-width="130" show-overflow-tooltip />
<el-table-column
label="创建人"
prop="createUserName"
min-width="120"
show-overflow-tooltip
/>
<el-table-column <el-table-column
label="创建时间" label="创建时间"
prop="createTime" prop="createTime"
+2
View File
@@ -70,6 +70,8 @@
<p class="project-name">{{ row.projectName || '-' }}</p> <p class="project-name">{{ row.projectName || '-' }}</p>
<p>{{ timeRange(row) }}</p> <p>{{ timeRange(row) }}</p>
<p>{{ goodsSummary(row) }}</p> <p>{{ goodsSummary(row) }}</p>
<p>创建人:{{ row.createUserName || '-' }}</p>
<p>创建时间:{{ row.createTime || '-' }}</p>
</section> </section>
<section class="route-progress"> <section class="route-progress">
<div class="route-track"> <div class="route-track">
+2 -5
View File
@@ -416,7 +416,7 @@ import { getList as getProjectList } from '@/api/business/project-apply';
import { getDeptTree } from '@/api/system/dept'; import { getDeptTree } from '@/api/system/dept';
import { exportBlob } from '@/api/common'; import { exportBlob } from '@/api/common';
import { config, option } from '@/option/business/process-config'; 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 { downloadXls } from '@/utils/util';
import { mapGetters } from 'vuex'; import { mapGetters } from 'vuex';
import NProgress from 'nprogress'; import NProgress from 'nprogress';
@@ -524,10 +524,7 @@ export default {
}; };
}, },
isAdmin() { isAdmin() {
const authority = this.userInfo && this.userInfo.authority; return isAdministrator(this.userInfo);
return Array.isArray(authority)
? authority.includes('admin')
: String(authority || '').includes('admin');
}, },
ids() { ids() {
return this.selectionList.map(item => item.id).join(','); return this.selectionList.map(item => item.id).join(',');
+2 -5
View File
@@ -911,7 +911,7 @@ import { getDeptTree, getPlatformCompanySelect } from '@/api/system/dept';
import { getDictionary as getSystemDictionary } from '@/api/system/dict'; import { getDictionary as getSystemDictionary } from '@/api/system/dict';
import { getDictionary as getBizDictionary } from '@/api/system/dictbiz'; import { getDictionary as getBizDictionary } from '@/api/system/dictbiz';
import { getList as getUserList } from '@/api/system/user'; 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 { downloadFileByUrl, downloadXls } from '@/utils/util';
import { getMKApprovalUrl } from '@/api/system/business-process'; import { getMKApprovalUrl } from '@/api/system/business-process';
import { loadMkEnabled, submitMkApprovalFlow } from '@/utils/mk-approval'; import { loadMkEnabled, submitMkApprovalFlow } from '@/utils/mk-approval';
@@ -1286,10 +1286,7 @@ export default {
}; };
}, },
isAdmin() { isAdmin() {
const authority = this.userInfo && this.userInfo.authority; return isAdministrator(this.userInfo);
return Array.isArray(authority)
? authority.includes('admin')
: String(authority || '').includes('admin');
}, },
canViewAllDept() { canViewAllDept() {
return this.isAdmin; return this.isAdmin;
@@ -309,7 +309,7 @@ import {
getList as getProjectList, getList as getProjectList,
} from '@/api/business/project-apply'; } from '@/api/business/project-apply';
import { config, option } from '@/option/business/temporary-credit-limit'; 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 { downloadFileByUrl, downloadXls } from '@/utils/util';
import { ElImageViewer } from 'element-plus'; import { ElImageViewer } from 'element-plus';
import { OpenFileViewer } from '@open-file-viewer/vue'; import { OpenFileViewer } from '@open-file-viewer/vue';
@@ -423,10 +423,7 @@ export default {
return String(width); return String(width);
}, },
isAdmin() { isAdmin() {
const authority = this.userInfo?.authority; return isAdministrator(this.userInfo);
return Array.isArray(authority)
? authority.includes('admin')
: String(authority || '').includes('admin');
}, },
canCreate() { canCreate() {
return this.hasPermission(`${this.config.permission}_add`); return this.hasPermission(`${this.config.permission}_add`);
+2 -3
View File
@@ -45,6 +45,7 @@ import { useStore } from 'vuex';
import { ElMessage, ElMessageBox } from 'element-plus'; import { ElMessage, ElMessageBox } from 'element-plus';
import md5 from 'js-md5'; import md5 from 'js-md5';
import * as api from '@/api/business/voucher-manage'; import * as api from '@/api/business/voucher-manage';
import { isAdministrator } from '@/utils/auth';
const route = useRoute(); const route = useRoute();
const router = useRouter(); const router = useRouter();
@@ -52,9 +53,7 @@ const store = useStore();
const voucherId = route.query.id; const voucherId = route.query.id;
const isSuperAdmin = computed(() => { const isSuperAdmin = computed(() => {
const authority = store.getters.userInfo?.authority; const authority = store.getters.userInfo?.authority;
return Array.isArray(authority) return isAdministrator({ authority });
? authority.includes('admin')
: String(authority || '').includes('admin');
}); });
const loading = ref(false), rows = ref([]), voucher = ref({ voucherBatchNo: route.query.batchNo || '' }); const loading = ref(false), rows = ref([]), voucher = ref({ voucherBatchNo: route.query.batchNo || '' });
const page = reactive({ current: 1, size: 10, total: 0 }); const page = reactive({ current: 1, size: 10, total: 0 });
+4 -2
View File
@@ -101,7 +101,8 @@
prop="relatedWaybillCount" prop="relatedWaybillCount"
label="凭证已关联数量" label="凭证已关联数量"
width="125" width="125"
/><el-table-column prop="unRelatedWaybillCount" label="凭证未关联数量" width="125" /> /> <el-table-column prop="unRelatedWaybillCount" label="凭证未关联数量" width="125" />
<el-table-column prop="createUserName" label="创建人" min-width="120" />
<el-table-column prop="createTime" label="创建时间" min-width="170" /> <el-table-column prop="createTime" label="创建时间" min-width="170" />
<el-table-column <el-table-column
prop="auditStatus" prop="auditStatus"
@@ -504,6 +505,7 @@
import { computed, reactive, ref, watch, onMounted } from 'vue'; import { computed, reactive, ref, watch, onMounted } from 'vue';
import { useRouter } from 'vue-router'; import { useRouter } from 'vue-router';
import { useStore } from 'vuex'; import { useStore } from 'vuex';
import { isAdministrator as checkAdministrator } from '@/utils/auth';
import md5 from 'js-md5'; import md5 from 'js-md5';
import { ElMessage, ElMessageBox } from 'element-plus'; import { ElMessage, ElMessageBox } from 'element-plus';
import { WarnTriangleFilled } from '@element-plus/icons-vue'; import { WarnTriangleFilled } from '@element-plus/icons-vue';
@@ -517,7 +519,7 @@ const store = useStore();
// 权限判断 // 权限判断
const permission = computed(() => store.getters.permission); const permission = computed(() => store.getters.permission);
const userInfo = computed(() => store.getters.userInfo); const userInfo = computed(() => store.getters.userInfo);
const isAdmin = computed(() => userInfo.value?.authority?.includes('admin')); const isAdmin = computed(() => checkAdministrator(userInfo.value));
const hasPermission = code => { const hasPermission = code => {
if (isAdmin.value) return true; if (isAdmin.value) return true;
return permission.value?.[code] === true; return permission.value?.[code] === true;
@@ -115,6 +115,7 @@
<script> <script>
import { mapGetters } from 'vuex'; import { mapGetters } from 'vuex';
import { billPaymentTableColumns } from '@/option/payment/billPayment'; import { billPaymentTableColumns } from '@/option/payment/billPayment';
import { isAdministrator } from '@/utils/auth';
export default { export default {
name: 'BillPaymentTable', name: 'BillPaymentTable',
@@ -143,7 +144,7 @@ export default {
computed: { computed: {
...mapGetters(['permission', 'userInfo']), ...mapGetters(['permission', 'userInfo']),
isAdmin() { isAdmin() {
return String(this.userInfo?.authority || '').includes('admin'); return isAdministrator(this.userInfo);
}, },
}, },
methods: { methods: {
+2 -4
View File
@@ -138,6 +138,7 @@ import { mapGetters } from 'vuex';
import * as api from '@/api/payment/receiptClaimRecord'; import * as api from '@/api/payment/receiptClaimRecord';
import { receiptClaimRecordTableColumns } from '@/option/payment/receiptClaimRecord'; import { receiptClaimRecordTableColumns } from '@/option/payment/receiptClaimRecord';
import SectionCard from '@/components/section-card/main.vue'; import SectionCard from '@/components/section-card/main.vue';
import { isAdministrator } from '@/utils/auth';
const emptyQuery = () => ({ const emptyQuery = () => ({
receiptNoticeNo: '', receiptNoticeNo: '',
@@ -173,10 +174,7 @@ export default {
computed: { computed: {
...mapGetters(['permission', 'userInfo']), ...mapGetters(['permission', 'userInfo']),
isAdmin() { isAdmin() {
const authority = this.userInfo?.authority; return isAdministrator(this.userInfo);
return Array.isArray(authority)
? authority.includes('admin')
: String(authority || '').includes('admin');
}, },
}, },
mounted() { mounted() {
+2 -4
View File
@@ -193,6 +193,7 @@
import { mapGetters } from 'vuex'; import { mapGetters } from 'vuex';
import * as api from '@/api/payment/receiptFlow'; import * as api from '@/api/payment/receiptFlow';
import { receiptFlowTableColumns } from '@/option/payment/receiptFlow'; import { receiptFlowTableColumns } from '@/option/payment/receiptFlow';
import { isAdministrator } from '@/utils/auth';
const receiptFlowMockTemplates = [ const receiptFlowMockTemplates = [
{ {
@@ -281,10 +282,7 @@ export default {
computed: { computed: {
...mapGetters(['permission', 'userInfo']), ...mapGetters(['permission', 'userInfo']),
isAdmin() { isAdmin() {
const authority = this.userInfo?.authority; return isAdministrator(this.userInfo);
return Array.isArray(authority)
? authority.includes('admin')
: String(authority || '').includes('admin');
}, },
}, },
mounted() { mounted() {
+3 -3
View File
@@ -26,13 +26,13 @@
<el-link <el-link
type="primary" type="primary"
@click.stop="handleDesign(scope.row.name)" @click.stop="handleDesign(scope.row.name)"
v-if="userInfo.authority.includes('admin')" v-if="isAdministrator"
>设计 >设计
</el-link> </el-link>
<el-link <el-link
type="primary" type="primary"
@click.stop="handlePreview(scope.row.name)" @click.stop="handlePreview(scope.row.name)"
v-if="userInfo.authority.includes('admin')" v-if="isAdministrator"
>预览 >预览
</el-link> </el-link>
</template> </template>
@@ -97,7 +97,7 @@ export default {
}; };
}, },
computed: { computed: {
...mapGetters(['userInfo', 'permission']), ...mapGetters(['userInfo', 'permission', 'isAdministrator']),
permissionList() { permissionList() {
return { return {
addBtn: false, addBtn: false,
+2 -2
View File
@@ -33,7 +33,7 @@
<template #menu="scope"> <template #menu="scope">
<el-link <el-link
type="primary" type="primary"
v-if="userInfo.authority.includes('admin')" v-if="isAdministrator"
@click="handleDebug(scope.row)" @click="handleDebug(scope.row)"
>调试 >调试
</el-link> </el-link>
@@ -292,7 +292,7 @@ export default {
}, },
}, },
computed: { computed: {
...mapGetters(['userInfo', 'permission']), ...mapGetters(['userInfo', 'permission', 'isAdministrator']),
permissionList() { permissionList() {
return { return {
addBtn: this.validData(this.permission.oss_add), addBtn: this.validData(this.permission.oss_add),
+2 -2
View File
@@ -33,7 +33,7 @@
<template #menu="scope"> <template #menu="scope">
<el-link <el-link
type="primary" type="primary"
v-if="userInfo.authority.includes('admin')" v-if="isAdministrator"
@click="handleDebug(scope.row)" @click="handleDebug(scope.row)"
>调试 >调试
</el-link> </el-link>
@@ -313,7 +313,7 @@ export default {
}, },
}, },
computed: { computed: {
...mapGetters(['userInfo', 'permission']), ...mapGetters(['userInfo', 'permission', 'isAdministrator']),
permissionList() { permissionList() {
return { return {
addBtn: this.validData(this.permission.sms_add, false), addBtn: this.validData(this.permission.sms_add, false),
@@ -965,6 +965,7 @@ import {
import { downloadFileByUrl } from '@/utils/util'; import { downloadFileByUrl } from '@/utils/util';
import { submitMkApprovalFlow } from '@/utils/mk-approval'; import { submitMkApprovalFlow } from '@/utils/mk-approval';
import * as XLSX from 'xlsx'; import * as XLSX from 'xlsx';
import { isAdministrator } from '@/utils/auth';
export default { export default {
name: 'PreSettlementEditor', name: 'PreSettlementEditor',
@@ -1163,10 +1164,7 @@ export default {
return !this.readonly && ['draft', 'returned'].includes(this.form.approvalStatus); return !this.readonly && ['draft', 'returned'].includes(this.form.approvalStatus);
}, },
isAdmin() { isAdmin() {
const authority = this.userInfo?.authority; return isAdministrator(this.userInfo);
return Array.isArray(authority)
? authority.includes('admin')
: String(authority || '').includes('admin');
}, },
canAdjustDetail() { canAdjustDetail() {
return this.editable && this.hasPermission('pre_settlement_adjust'); return this.editable && this.hasPermission('pre_settlement_adjust');
+2 -4
View File
@@ -306,6 +306,7 @@ import { downloadFile } from '@/utils/util';
import { getMKApprovalUrl } from '@/api/system/business-process'; import { getMKApprovalUrl } from '@/api/system/business-process';
import { loadMkEnabled, submitMkApprovalFlow } from '@/utils/mk-approval'; import { loadMkEnabled, submitMkApprovalFlow } from '@/utils/mk-approval';
import PreSettlementEditor from './components/pre-settlement-editor.vue'; import PreSettlementEditor from './components/pre-settlement-editor.vue';
import { isAdministrator } from '@/utils/auth';
const emptyQuery = () => ({ const emptyQuery = () => ({
preSettlementNo: '', preSettlementNo: '',
@@ -359,10 +360,7 @@ export default {
computed: { computed: {
...mapGetters(['permission', 'userInfo']), ...mapGetters(['permission', 'userInfo']),
isAdmin() { isAdmin() {
const authority = this.userInfo?.authority; return isAdministrator(this.userInfo);
return Array.isArray(authority)
? authority.includes('admin')
: String(authority || '').includes('admin');
}, },
visibleSearchFields() { visibleSearchFields() {
return this.searchExpanded ? this.searchFields : this.searchFields.slice(0, 4); return this.searchExpanded ? this.searchFields : this.searchFields.slice(0, 4);
@@ -172,6 +172,7 @@ import { settlementAdjustmentSearchFields } from '@/option/settlement/settlement
import organizationSearch from '@/mixins/organization-search'; import organizationSearch from '@/mixins/organization-search';
import { settlementAdjustmentTableColumns } from '@/option/settlement/settlementAdjustmentTable'; import { settlementAdjustmentTableColumns } from '@/option/settlement/settlementAdjustmentTable';
import SettlementAdjustmentEditor from './components/settlement-adjustment-editor.vue'; import SettlementAdjustmentEditor from './components/settlement-adjustment-editor.vue';
import { isAdministrator } from '@/utils/auth';
const emptyQuery = () => ({ const emptyQuery = () => ({
adjustmentNo: '', adjustmentNo: '',
@@ -207,7 +208,7 @@ export default {
return this.searchExpanded ? this.searchFields : this.searchFields.slice(0, 4); return this.searchExpanded ? this.searchFields : this.searchFields.slice(0, 4);
}, },
isAdmin() { isAdmin() {
return String(this.userInfo?.authority || '').includes('admin'); return isAdministrator(this.userInfo);
}, },
}, },
created() { created() {
+69 -13
View File
@@ -34,7 +34,7 @@
type="primary" type="primary"
plain plain
:loading="oaSyncLoading" :loading="oaSyncLoading"
v-if="userInfo.authority.includes('admin')" v-if="isAdministrator"
@click="handleOaOrgSync" @click="handleOaOrgSync"
>自动同步组织 >自动同步组织
</el-button> </el-button>
@@ -43,7 +43,7 @@
<el-link <el-link
type="primary" type="primary"
@click.stop="handleAdd(scope.row, scope.index)" @click.stop="handleAdd(scope.row, scope.index)"
v-if="userInfo.authority.includes('admin')" v-if="isAdministrator"
>新增子项 >新增子项
</el-link> </el-link>
</template> </template>
@@ -365,6 +365,7 @@ export default {
label: '组织类型', label: '组织类型',
type: 'select', type: 'select',
dicData: [], dicData: [],
dataType: 'number',
minWidth: 120, minWidth: 120,
order: 90, order: 90,
prop: 'deptCategory', prop: 'deptCategory',
@@ -509,7 +510,7 @@ export default {
this.loadOrganizationTypeOptions(); this.loadOrganizationTypeOptions();
}, },
computed: { computed: {
...mapGetters(['userInfo', 'permission']), ...mapGetters(['userInfo', 'permission', 'isAdministrator']),
permissionList() { permissionList() {
return { return {
addBtn: this.validData(this.permission.dept_add, false), addBtn: this.validData(this.permission.dept_add, false),
@@ -753,6 +754,9 @@ export default {
.map(item => this.normalizeOrganizationTypeOption(item)) .map(item => this.normalizeOrganizationTypeOption(item))
.filter(Boolean); .filter(Boolean);
this.resetDeptCategoryOptions(); this.resetDeptCategoryOptions();
if (list.length && !this.organizationTypeOptions.length) {
this.$message.warning('组织类型字典 dictKey 须为数字 1~6,当前无法解析,请检查业务字典配置');
}
// 字典异步返回后触发表格组织类型标签重绘 // 字典异步返回后触发表格组织类型标签重绘
if (Array.isArray(this.data) && this.data.length) { if (Array.isArray(this.data) && this.data.length) {
this.data = [...this.data]; this.data = [...this.data];
@@ -760,24 +764,68 @@ export default {
}); });
}, },
/** /**
* 业务字典项转下拉选项:dictKey 为纯数字时转 number(兼容历史 deptCategory 1~6),否则保留原值。 * 业务字典项转下拉选项。后端 deptCategory 为 Integer,value 必须始终为数字。
* dictKey 为纯数字时直接使用;若配成中文则回退用 sort(1~6)作为层级码。
*/ */
normalizeOrganizationTypeOption(item) { normalizeOrganizationTypeOption(item) {
const label = item?.dictValue ?? item?.label; const label = item?.dictValue ?? item?.label;
const rawKey = item?.dictKey ?? item?.value;
if (label === undefined || label === null || String(label).trim() === '') { if (label === undefined || label === null || String(label).trim() === '') {
return null; return null;
} }
if (rawKey === undefined || rawKey === null || String(rawKey).trim() === '') { const rawKey = item?.dictKey ?? item?.value;
const keyText = rawKey === undefined || rawKey === null ? '' : String(rawKey).trim();
const keyNumber = Number(keyText);
const isPureNumber = keyText !== '' && !Number.isNaN(keyNumber) && String(keyNumber) === keyText;
if (isPureNumber) {
return {
label: String(label),
value: keyNumber,
};
}
// 兼容 dictKey 误配成中文:用排序号作为 1~6 层级码,保证下拉有数据且可提交 Integer
const sortNumber = Number(item?.sort);
if (!Number.isNaN(sortNumber) && sortNumber >= 1 && sortNumber <= 6) {
return {
label: String(label),
value: sortNumber,
};
}
return null;
},
/**
* 提交前将组织类型规范为 Integer;空状态字段去掉,避免 "" 反序列化失败。
*/
prepareDeptSubmitRow(row) {
const category = this.resolveDeptCategoryValue(row.deptCategory);
if (category === null) {
return false;
}
row.deptCategory = category;
if (row.status === '' || row.status === null || row.status === undefined) {
delete row.status;
} else {
row.status = Number(row.status);
}
return true;
},
resolveDeptCategoryValue(value) {
if (value === null || value === undefined || value === '') {
this.$message.warning('请选择组织类型');
return null; return null;
} }
const keyText = String(rawKey).trim(); const asNumber = Number(value);
const asNumber = Number(keyText); if (!Number.isNaN(asNumber) && String(asNumber) === String(value).trim()) {
const isPureNumber = keyText !== '' && !Number.isNaN(asNumber) && String(asNumber) === keyText; return asNumber;
return { }
label: String(label), // 容错:表单里残留了中文标签时,按字典项 label 反查数字编码
value: isPureNumber ? asNumber : keyText, const matched = this.organizationTypeOptions.find(
}; item => String(item.label) === String(value) || this.isSameDeptCategory(item.value, value)
);
if (matched && typeof matched.value === 'number' && !Number.isNaN(matched.value)) {
return matched.value;
}
this.$message.warning('组织类型无效,请重新选择(字典键须为数字 1~6)');
return null;
}, },
resetDeptCategoryOptions() { resetDeptCategoryOptions() {
const categoryColumn = this.findColumn(this.option.column, 'deptCategory'); const categoryColumn = this.findColumn(this.option.column, 'deptCategory');
@@ -952,6 +1000,10 @@ export default {
row.kingdeeDeptCode = String(row.kingdeeDeptCode || '').trim(); row.kingdeeDeptCode = String(row.kingdeeDeptCode || '').trim();
row.leaderId = func.join(row.leaderId); row.leaderId = func.join(row.leaderId);
this.normalizeTopParent(row); this.normalizeTopParent(row);
if (!this.prepareDeptSubmitRow(row)) {
loading();
return;
}
if (this.isCarrierDeptCategory(row.deptCategory) && !row.carrierCustomerId) { if (this.isCarrierDeptCategory(row.deptCategory) && !row.carrierCustomerId) {
this.$message.warning('请选择承运商'); this.$message.warning('请选择承运商');
loading(); loading();
@@ -983,6 +1035,10 @@ export default {
row.kingdeeDeptCode = String(row.kingdeeDeptCode || '').trim(); row.kingdeeDeptCode = String(row.kingdeeDeptCode || '').trim();
row.leaderId = func.join(row.leaderId); row.leaderId = func.join(row.leaderId);
this.normalizeTopParent(row); this.normalizeTopParent(row);
if (!this.prepareDeptSubmitRow(row)) {
loading();
return;
}
if (this.isCarrierDeptCategory(row.deptCategory) && !row.carrierCustomerId) { if (this.isCarrierDeptCategory(row.deptCategory) && !row.carrierCustomerId) {
this.$message.warning('请选择承运商'); this.$message.warning('请选择承运商');
loading(); loading();
+3 -3
View File
@@ -35,7 +35,7 @@
<el-link <el-link
type="primary" type="primary"
@click.stop="handleRowClick(scope.row)" @click.stop="handleRowClick(scope.row)"
v-if="userInfo.authority.includes('admin')" v-if="isAdministrator"
>字典配置 >字典配置
</el-link> </el-link>
</template> </template>
@@ -81,7 +81,7 @@
<el-link <el-link
type="primary" type="primary"
@click.stop="handleAdd(scope.row, scope.index)" @click.stop="handleAdd(scope.row, scope.index)"
v-if="userInfo.authority.includes('admin')" v-if="isAdministrator"
>新增子项 >新增子项
</el-link> </el-link>
</template> </template>
@@ -137,7 +137,7 @@ export default {
}; };
}, },
computed: { computed: {
...mapGetters(['userInfo', 'permission']), ...mapGetters(['userInfo', 'permission', 'isAdministrator']),
permissionList() { permissionList() {
return { return {
addBtn: this.validData(this.permission.dict_add, false), addBtn: this.validData(this.permission.dict_add, false),
+3 -3
View File
@@ -35,7 +35,7 @@
<el-link <el-link
type="primary" type="primary"
@click.stop="handleRowClick(scope.row)" @click.stop="handleRowClick(scope.row)"
v-if="userInfo.authority.includes('admin')" v-if="isAdministrator"
>字典配置 >字典配置
</el-link> </el-link>
</template> </template>
@@ -81,7 +81,7 @@
<el-link <el-link
type="primary" type="primary"
@click.stop="handleAdd(scope.row, scope.index)" @click.stop="handleAdd(scope.row, scope.index)"
v-if="userInfo.authority.includes('admin')" v-if="isAdministrator"
>新增子项 >新增子项
</el-link> </el-link>
</template> </template>
@@ -137,7 +137,7 @@ export default {
}; };
}, },
computed: { computed: {
...mapGetters(['userInfo', 'permission']), ...mapGetters(['userInfo', 'permission', 'isAdministrator']),
permissionList() { permissionList() {
return { return {
addBtn: this.validData(this.permission.dictbiz_add, false), addBtn: this.validData(this.permission.dictbiz_add, false),
+2 -2
View File
@@ -35,7 +35,7 @@
<el-link <el-link
type="primary" type="primary"
@click.stop="handleAdd(scope.row, scope.index)" @click.stop="handleAdd(scope.row, scope.index)"
v-if="userInfo.authority.includes('admin') && scope.row.category === 1" v-if="isAdministrator && scope.row.category === 1"
>新增子项 >新增子项
</el-link> </el-link>
</template> </template>
@@ -280,7 +280,7 @@ export default {
}, },
}, },
computed: { computed: {
...mapGetters(['userInfo', 'permission']), ...mapGetters(['userInfo', 'permission', 'isAdministrator']),
permissionList() { permissionList() {
return { return {
addBtn: this.validData(this.permission.menu_add, false), addBtn: this.validData(this.permission.menu_add, false),
+10 -10
View File
@@ -40,7 +40,7 @@
type="primary" type="primary"
plain plain
icon="el-icon-refresh" icon="el-icon-refresh"
v-if="userInfo.authority.includes('administrator') && !recycleMode" v-if="isAdministrator && !recycleMode"
@click="handleRecycle" @click="handleRecycle"
>回收站 >回收站
</el-button> </el-button>
@@ -48,7 +48,7 @@
type="success" type="success"
plain plain
icon="el-icon-check" icon="el-icon-check"
v-if="userInfo.authority.includes('administrator') && recycleMode" v-if="isAdministrator && recycleMode"
@click="handleRecyclePass" @click="handleRecyclePass"
>恢 复 >恢 复
</el-button> </el-button>
@@ -56,7 +56,7 @@
type="danger" type="danger"
plain plain
icon="el-icon-close" icon="el-icon-close"
v-if="userInfo.authority.includes('administrator') && recycleMode" v-if="isAdministrator && recycleMode"
@click="handleRecycleRemove" @click="handleRecycleRemove"
>删除 >删除
</el-button> </el-button>
@@ -64,7 +64,7 @@
type="primary" type="primary"
plain plain
icon="el-icon-refresh-left" icon="el-icon-refresh-left"
v-if="userInfo.authority.includes('administrator') && recycleMode" v-if="isAdministrator && recycleMode"
@click="handleRecycleBack" @click="handleRecycleBack"
>返 回 >返 回
</el-button> </el-button>
@@ -77,7 +77,7 @@
<el-button <el-button
plain plain
type="info" type="info"
v-if="userInfo.authority.includes('administrator') && !recycleMode" v-if="isAdministrator && !recycleMode"
icon="el-icon-setting" icon="el-icon-setting"
@click="handleSetting" @click="handleSetting"
>批量授权配置 >批量授权配置
@@ -93,7 +93,7 @@
> >
<el-button <el-button
plain plain
v-if="userInfo.authority.includes('administrator') && !recycleMode" v-if="isAdministrator && !recycleMode"
icon="el-icon-message-box" icon="el-icon-message-box"
@click="handleDatasourceSetting" @click="handleDatasourceSetting"
>数据源管理 >数据源管理
@@ -107,7 +107,7 @@
> >
<el-button <el-button
plain plain
v-if="userInfo.authority.includes('administrator') && !recycleMode" v-if="isAdministrator && !recycleMode"
icon="el-icon-set-up" icon="el-icon-set-up"
@click="handlePackageSetting" @click="handlePackageSetting"
>产品包管理 >产品包管理
@@ -116,13 +116,13 @@
</template> </template>
<template #menu="scope"> <template #menu="scope">
<el-link <el-link
v-if="userInfo.authority.includes('administrator') && !recycleMode" v-if="isAdministrator && !recycleMode"
type="primary" type="primary"
@click.stop="handleRowDatasource(scope.row)" @click.stop="handleRowDatasource(scope.row)"
>数据源 >数据源
</el-link> </el-link>
<el-link <el-link
v-if="userInfo.authority.includes('administrator') && !recycleMode" v-if="isAdministrator && !recycleMode"
type="primary" type="primary"
@click.stop="handleRowPackage(scope.row)" @click.stop="handleRowPackage(scope.row)"
>产品包 >产品包
@@ -436,7 +436,7 @@ export default {
}, },
}, },
computed: { computed: {
...mapGetters(['userInfo', 'permission']), ...mapGetters(['userInfo', 'permission', 'isAdministrator']),
permissionList() { permissionList() {
return { return {
addBtn: this.validData(this.permission.tenant_add, false), addBtn: this.validData(this.permission.tenant_add, false),
+12 -12
View File
@@ -52,7 +52,7 @@
type="primary" type="primary"
plain plain
icon="el-icon-operation" icon="el-icon-operation"
v-if="userInfo.authority.includes('admin') && !auditMode" v-if="isAdministrator && !auditMode"
@click="handleAudit" @click="handleAudit"
>审 核 >审 核
</el-button> </el-button>
@@ -60,7 +60,7 @@
type="primary" type="primary"
plain plain
:loading="iamSyncLoading" :loading="iamSyncLoading"
v-if="userInfo.authority.includes('admin') && !auditMode" v-if="isAdministrator && !auditMode"
@click="handleIamSync" @click="handleIamSync"
>同步人员 >同步人员
</el-button> </el-button>
@@ -68,7 +68,7 @@
type="success" type="success"
plain plain
icon="el-icon-check" icon="el-icon-check"
v-if="userInfo.authority.includes('admin') && auditMode" v-if="isAdministrator && auditMode"
@click="handleAuditPass" @click="handleAuditPass"
>通 过 >通 过
</el-button> </el-button>
@@ -76,7 +76,7 @@
type="danger" type="danger"
plain plain
icon="el-icon-close" icon="el-icon-close"
v-if="userInfo.authority.includes('admin') && auditMode" v-if="isAdministrator && auditMode"
@click="handleAuditRefuse" @click="handleAuditRefuse"
>拒 绝 >拒 绝
</el-button> </el-button>
@@ -84,7 +84,7 @@
type="primary" type="primary"
plain plain
icon="el-icon-refresh-left" icon="el-icon-refresh-left"
v-if="userInfo.authority.includes('admin') && auditMode" v-if="isAdministrator && auditMode"
@click="handleAuditBack" @click="handleAuditBack"
>返 回 >返 回
</el-button> </el-button>
@@ -97,7 +97,7 @@
>角色配置 >角色配置
</el-button> </el-button>
<el-dropdown <el-dropdown
v-if="userInfo.authority.includes('admin') && !auditMode" v-if="isAdministrator && !auditMode"
@command="handleDataManageCommand" @command="handleDataManageCommand"
style="margin-left: 10px" style="margin-left: 10px"
> >
@@ -120,13 +120,13 @@
</template> </template>
<template #menu-right> <template #menu-right>
<el-button <el-button
v-if="userInfo.authority.includes('admin') && !auditMode" v-if="isAdministrator && !auditMode"
icon="el-icon-document" icon="el-icon-document"
@click="$refs.authLog.openAuthLog()" @click="$refs.authLog.openAuthLog()"
>认证日志 >认证日志
</el-button> </el-button>
<el-button <el-button
v-if="userInfo.authority.includes('admin') && !auditMode" v-if="isAdministrator && !auditMode"
icon="el-icon-lock" icon="el-icon-lock"
@click="$refs.authLock.openLockLog()" @click="$refs.authLock.openLockLog()"
>锁定管理 >锁定管理
@@ -149,16 +149,16 @@
<el-link type="primary">更多 </el-link> <el-link type="primary">更多 </el-link>
<template #dropdown> <template #dropdown>
<el-dropdown-menu> <el-dropdown-menu>
<el-dropdown-item command="setLeader" v-if="userInfo.authority.includes('admin')"> <el-dropdown-item command="setLeader" v-if="isAdministrator">
{{ row.isLeader === 1 ? '取消主管' : '设置主管' }} {{ row.isLeader === 1 ? '取消主管' : '设置主管' }}
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item command="grantRole" v-if="permission.user_role"> <el-dropdown-item command="grantRole" v-if="permission.user_role">
角色配置 角色配置
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item command="authLog" v-if="userInfo.authority.includes('admin')"> <el-dropdown-item command="authLog" v-if="isAdministrator">
认证日志 认证日志
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item command="lockUser" v-if="userInfo.authority.includes('admin')"> <el-dropdown-item command="lockUser" v-if="isAdministrator">
锁定账号 锁定账号
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item command="resetPassword" v-if="permission.user_reset"> <el-dropdown-item command="resetPassword" v-if="permission.user_reset">
@@ -568,7 +568,7 @@ export default {
}, },
}, },
computed: { computed: {
...mapGetters(['userInfo', 'permission']), ...mapGetters(['userInfo', 'permission', 'isAdministrator']),
oaSyncDialogTitle() { oaSyncDialogTitle() {
if (this.oaSyncStatus === 'done') { if (this.oaSyncStatus === 'done') {
return '同步完成'; return '同步完成';
+4 -4
View File
@@ -59,7 +59,7 @@
> >
<el-button <el-button
plain plain
v-if="userInfo.authority.includes('administrator')" v-if="isAdministrator"
:loading="!componentLoaded" :loading="!componentLoaded"
icon="el-icon-connection" icon="el-icon-connection"
@click="handleFormSetting" @click="handleFormSetting"
@@ -74,7 +74,7 @@
> >
<el-button <el-button
plain plain
v-if="userInfo.authority.includes('administrator')" v-if="isAdministrator"
icon="el-icon-message-box" icon="el-icon-message-box"
@click="handleCodeSetting" @click="handleCodeSetting"
>默认配置管理 >默认配置管理
@@ -91,7 +91,7 @@
</el-link> </el-link>
<el-link <el-link
type="primary" type="primary"
v-if="userInfo.authority.includes('administrator')" v-if="isAdministrator"
class="none-border" class="none-border"
@click.stop="handleBuildSingle(scope.row)" @click.stop="handleBuildSingle(scope.row)"
>生成 >生成
@@ -302,7 +302,7 @@ export default {
}, },
}, },
computed: { computed: {
...mapGetters(['userInfo', 'permission']), ...mapGetters(['userInfo', 'permission', 'isAdministrator']),
permissionList() { permissionList() {
return { return {
addBtn: this.validData(this.permission.code_add, false), addBtn: this.validData(this.permission.code_add, false),
+2 -2
View File
@@ -648,7 +648,7 @@ import organizationSearch from '@/mixins/organization-search';
import { getDictionary } from '@/api/system/dictbiz'; import { getDictionary } from '@/api/system/dictbiz';
import { getLazyTree } from '@/api/base/region'; import { getLazyTree } from '@/api/base/region';
import { exportBlob } from '@/api/common'; import { exportBlob } from '@/api/common';
import { getToken } from '@/utils/auth'; import { getToken, isAdministrator } from '@/utils/auth';
import { getUploadHeaders } from '@/utils/upload'; import { getUploadHeaders } from '@/utils/upload';
import { downloadXls } from '@/utils/util'; import { downloadXls } from '@/utils/util';
import ImageUploadField from '@/components/image-upload-field/main.vue'; import ImageUploadField from '@/components/image-upload-field/main.vue';
@@ -877,7 +877,7 @@ export default {
}, },
isAdmin() { isAdmin() {
const authority = this.userInfo.authority || ''; const authority = this.userInfo.authority || '';
return authority.includes('admin'); return isAdministrator(this.userInfo);
}, },
permissionList() { permissionList() {
return { return {
+2 -2
View File
@@ -588,7 +588,7 @@ import {
recognizeBaiduOcr, recognizeBaiduOcr,
} from '@/api/transportCapacity/transport-ship'; } from '@/api/transportCapacity/transport-ship';
import { exportBlob } from '@/api/common'; import { exportBlob } from '@/api/common';
import { getToken } from '@/utils/auth'; import { getToken, isAdministrator } from '@/utils/auth';
import { getUploadHeaders } from '@/utils/upload'; import { getUploadHeaders } from '@/utils/upload';
import { downloadXls } from '@/utils/util'; import { downloadXls } from '@/utils/util';
import ImageUploadField from '@/components/image-upload-field/main.vue'; import ImageUploadField from '@/components/image-upload-field/main.vue';
@@ -721,7 +721,7 @@ export default {
}, },
isAdmin() { isAdmin() {
const authority = this.userInfo.authority || ''; const authority = this.userInfo.authority || '';
return authority.includes('admin'); return isAdministrator(this.userInfo);
}, },
permissionList() { permissionList() {
return { return {
@@ -142,6 +142,7 @@ import { getList as getVehicleList } from '@/api/transportCapacity/transport-veh
import { getDeptTree } from '@/api/system/dept'; import { getDeptTree } from '@/api/system/dept';
import VehicleAttachmentTable from '@/components/vehicle-attachment-table/main.vue'; import VehicleAttachmentTable from '@/components/vehicle-attachment-table/main.vue';
import { option, statusName } from '@/option/transportCapacity/vehicle-dispatch'; import { option, statusName } from '@/option/transportCapacity/vehicle-dispatch';
import { isAdministrator } from '@/utils/auth';
export default { export default {
components: { components: {
@@ -178,7 +179,7 @@ export default {
statusName, statusName,
hasPermission(code) { hasPermission(code) {
return ( return (
String(this.userInfo?.authority || '').includes('admin') || this.permission?.[code] === true isAdministrator(this.userInfo) || this.permission?.[code] === true
); );
}, },
statusTagType(status) { statusTagType(status) {
+2 -2
View File
@@ -817,7 +817,7 @@ import {
import { getDeptTree } from '@/api/system/dept'; import { getDeptTree } from '@/api/system/dept';
import organizationSearch from '@/mixins/organization-search'; import organizationSearch from '@/mixins/organization-search';
import { exportBlob } from '@/api/common'; import { exportBlob } from '@/api/common';
import { getToken } from '@/utils/auth'; import { getToken, isAdministrator } from '@/utils/auth';
import { getUploadHeaders } from '@/utils/upload'; import { getUploadHeaders } from '@/utils/upload';
import { downloadXls } from '@/utils/util'; import { downloadXls } from '@/utils/util';
import ImageUploadField from '@/components/image-upload-field/main.vue'; import ImageUploadField from '@/components/image-upload-field/main.vue';
@@ -967,7 +967,7 @@ export default {
}, },
isAdmin() { isAdmin() {
const authority = this.userInfo.authority || ''; const authority = this.userInfo.authority || '';
return authority.includes('admin'); return isAdministrator(this.userInfo);
}, },
permissionList() { permissionList() {
return { return {
+2 -2
View File
@@ -91,7 +91,7 @@
<el-link <el-link
type="primary" type="primary"
@click.stop="handleAdd(scope.row, scope.index)" @click.stop="handleAdd(scope.row, scope.index)"
v-if="userInfo.authority.includes('admin')" v-if="isAdministrator"
>新增子项 >新增子项
</el-link> </el-link>
</template> </template>
@@ -149,7 +149,7 @@ export default {
}; };
}, },
computed: { computed: {
...mapGetters(['userInfo', 'permission']), ...mapGetters(['userInfo', 'permission', 'isAdministrator']),
permissionList() { permissionList() {
return { return {
addBtn: this.validData(this.permission.dict_add, false), addBtn: this.validData(this.permission.dict_add, false),
+2 -2
View File
@@ -91,7 +91,7 @@
<el-link <el-link
type="primary" type="primary"
@click.stop="handleAdd(scope.row, scope.index)" @click.stop="handleAdd(scope.row, scope.index)"
v-if="userInfo.authority.includes('admin')" v-if="isAdministrator"
>新增子项 >新增子项
</el-link> </el-link>
</template> </template>
@@ -149,7 +149,7 @@ export default {
}; };
}, },
computed: { computed: {
...mapGetters(['userInfo', 'permission']), ...mapGetters(['userInfo', 'permission', 'isAdministrator']),
permissionList() { permissionList() {
return { return {
addBtn: this.validData(this.permission.dictbiz_add, false), addBtn: this.validData(this.permission.dictbiz_add, false),
+2 -2
View File
@@ -157,7 +157,7 @@ import { getDeptTree } from '@/api/system/dept';
import { exportBlob } from '@/api/common'; import { exportBlob } from '@/api/common';
import { downloadXls } from '@/utils/util'; import { downloadXls } from '@/utils/util';
import { openImportDialog } from '@/utils/import-excel'; import { openImportDialog } from '@/utils/import-excel';
import { getToken } from '@/utils/auth'; import { getToken, isAdministrator } from '@/utils/auth';
import { normalizeSearchRangeParams } from '@/utils/search-range'; import { normalizeSearchRangeParams } from '@/utils/search-range';
import VehicleAttachmentTable from '@/components/vehicle-attachment-table/main.vue'; import VehicleAttachmentTable from '@/components/vehicle-attachment-table/main.vue';
import { mapGetters } from 'vuex'; import { mapGetters } from 'vuex';
@@ -204,7 +204,7 @@ export default {
...mapGetters(['permission', 'userInfo']), ...mapGetters(['permission', 'userInfo']),
isAdmin() { isAdmin() {
const authority = this.userInfo.authority || ''; const authority = this.userInfo.authority || '';
return authority.includes('admin'); return isAdministrator(this.userInfo);
}, },
permissionList() { permissionList() {
return { return {
@@ -171,7 +171,7 @@ import { getDeptTree } from '@/api/system/dept';
import { exportBlob } from '@/api/common'; import { exportBlob } from '@/api/common';
import { downloadXls } from '@/utils/util'; import { downloadXls } from '@/utils/util';
import { openImportDialog } from '@/utils/import-excel'; import { openImportDialog } from '@/utils/import-excel';
import { getToken } from '@/utils/auth'; import { getToken, isAdministrator } from '@/utils/auth';
import VehicleAttachmentTable from '@/components/vehicle-attachment-table/main.vue'; import VehicleAttachmentTable from '@/components/vehicle-attachment-table/main.vue';
import { mapGetters } from 'vuex'; import { mapGetters } from 'vuex';
import { excelOption, exportColumns, option } from '@/option/vehicle/annual-inspection-record'; import { excelOption, exportColumns, option } from '@/option/vehicle/annual-inspection-record';
@@ -214,7 +214,7 @@ export default {
...mapGetters(['permission', 'userInfo']), ...mapGetters(['permission', 'userInfo']),
isAdmin() { isAdmin() {
const authority = this.userInfo.authority || ''; const authority = this.userInfo.authority || '';
return authority.includes('admin'); return isAdministrator(this.userInfo);
}, },
permissionList() { permissionList() {
return { return {
@@ -470,6 +470,7 @@ import {
} from '@/api/vehicle/credit-score-quantification'; } from '@/api/vehicle/credit-score-quantification';
import { normalizeSearchRangeParams } from '@/utils/search-range'; import { normalizeSearchRangeParams } from '@/utils/search-range';
import { mapGetters } from 'vuex'; import { mapGetters } from 'vuex';
import { isAdministrator } from '@/utils/auth';
const createTimeRangeMap = { const createTimeRangeMap = {
createTimeRange: ['createTimeStart', 'createTimeEnd'], createTimeRange: ['createTimeStart', 'createTimeEnd'],
@@ -599,7 +600,7 @@ export default {
...mapGetters(['permission', 'userInfo']), ...mapGetters(['permission', 'userInfo']),
isAdmin() { isAdmin() {
const authority = this.userInfo.authority || ''; const authority = this.userInfo.authority || '';
return authority.includes('admin'); return isAdministrator(this.userInfo);
}, },
permissionList() { permissionList() {
return { return {
+20 -2
View File
@@ -1533,7 +1533,7 @@ import { getDeptTree } from '@/api/system/dept';
import { getLazyTree } from '@/api/base/region'; import { getLazyTree } from '@/api/base/region';
import { exportBlob } from '@/api/common'; import { exportBlob } from '@/api/common';
import { downloadFileByUrl, downloadXls } from '@/utils/util'; import { downloadFileByUrl, downloadXls } from '@/utils/util';
import { getToken } from '@/utils/auth'; import { getToken, isAdministrator } from '@/utils/auth';
import { getUploadHeaders } from '@/utils/upload'; import { getUploadHeaders } from '@/utils/upload';
import { normalizeSearchRangeParams } from '@/utils/search-range'; import { normalizeSearchRangeParams } from '@/utils/search-range';
import { ArrowRight } from '@element-plus/icons-vue'; import { ArrowRight } from '@element-plus/icons-vue';
@@ -2023,6 +2023,24 @@ export default {
], ],
clearable: true, clearable: true,
}, },
{
label: '创建人',
prop: 'createUserName',
addDisplay: false,
editDisplay: false,
minWidth: 120,
},
{
label: '创建时间',
prop: 'createTime',
sortable: true,
type: 'datetime',
format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss',
addDisplay: false,
editDisplay: false,
minWidth: 170,
},
], ],
}, },
}; };
@@ -2070,7 +2088,7 @@ export default {
...mapGetters(['permission', 'userInfo']), ...mapGetters(['permission', 'userInfo']),
isAdmin() { isAdmin() {
const authority = this.userInfo.authority || ''; const authority = this.userInfo.authority || '';
return authority.includes('admin'); return isAdministrator(this.userInfo);
}, },
permissionList() { permissionList() {
return { return {
+2 -2
View File
@@ -152,7 +152,7 @@ import { getList as getShipList } from '@/api/transportCapacity/transport-ship';
import { exportBlob } from '@/api/common'; import { exportBlob } from '@/api/common';
import { getDeptTree } from '@/api/system/dept'; import { getDeptTree } from '@/api/system/dept';
import { getDictionary } from '@/api/system/dictbiz'; import { getDictionary } from '@/api/system/dictbiz';
import { getToken } from '@/utils/auth'; import { getToken, isAdministrator } from '@/utils/auth';
import { openImportDialog } from '@/utils/import-excel'; import { openImportDialog } from '@/utils/import-excel';
import { downloadXls } from '@/utils/util'; import { downloadXls } from '@/utils/util';
import VehicleAttachmentTable from '@/components/vehicle-attachment-table/main.vue'; import VehicleAttachmentTable from '@/components/vehicle-attachment-table/main.vue';
@@ -186,7 +186,7 @@ export default {
computed: { computed: {
...mapGetters(['permission', 'userInfo']), ...mapGetters(['permission', 'userInfo']),
isAdmin() { isAdmin() {
return (this.userInfo.authority || '').includes('admin'); return isAdministrator(this.userInfo);
}, },
permissionList() { permissionList() {
return { return {
+2 -2
View File
@@ -139,7 +139,7 @@ import { getDeptTree } from '@/api/system/dept';
import { exportBlob } from '@/api/common'; import { exportBlob } from '@/api/common';
import { downloadXls } from '@/utils/util'; import { downloadXls } from '@/utils/util';
import { openImportDialog } from '@/utils/import-excel'; import { openImportDialog } from '@/utils/import-excel';
import { getToken } from '@/utils/auth'; import { getToken, isAdministrator } from '@/utils/auth';
import VehicleAttachmentTable from '@/components/vehicle-attachment-table/main.vue'; import VehicleAttachmentTable from '@/components/vehicle-attachment-table/main.vue';
import { mapGetters } from 'vuex'; import { mapGetters } from 'vuex';
import { excelOption, exportColumns, option } from '@/option/vehicle/etc-record'; import { excelOption, exportColumns, option } from '@/option/vehicle/etc-record';
@@ -180,7 +180,7 @@ export default {
...mapGetters(['permission', 'userInfo']), ...mapGetters(['permission', 'userInfo']),
isAdmin() { isAdmin() {
const authority = this.userInfo.authority || ''; const authority = this.userInfo.authority || '';
return authority.includes('admin'); return isAdministrator(this.userInfo);
}, },
permissionList() { permissionList() {
return { return {
+2 -2
View File
@@ -218,7 +218,7 @@ import { getDeptTree } from '@/api/system/dept';
import { exportBlob } from '@/api/common'; import { exportBlob } from '@/api/common';
import { downloadXls } from '@/utils/util'; import { downloadXls } from '@/utils/util';
import { handleImportExcel } from '@/utils/import-excel'; import { handleImportExcel } from '@/utils/import-excel';
import { getToken } from '@/utils/auth'; import { getToken, isAdministrator } from '@/utils/auth';
import { getUploadHeaders } from '@/utils/upload'; import { getUploadHeaders } from '@/utils/upload';
import { normalizeSearchRangeParams } from '@/utils/search-range'; import { normalizeSearchRangeParams } from '@/utils/search-range';
import { mapGetters } from 'vuex'; import { mapGetters } from 'vuex';
@@ -265,7 +265,7 @@ export default {
...mapGetters(['permission', 'userInfo']), ...mapGetters(['permission', 'userInfo']),
isAdmin() { isAdmin() {
const authority = this.userInfo.authority || ''; const authority = this.userInfo.authority || '';
return authority.includes('admin'); return isAdministrator(this.userInfo);
}, },
permissionList() { permissionList() {
return { return {
+12 -2
View File
@@ -194,7 +194,7 @@ import { exportBlob } from '@/api/common';
import { downloadXls } from '@/utils/util'; import { downloadXls } from '@/utils/util';
import { openImportDialog } from '@/utils/import-excel'; import { openImportDialog } from '@/utils/import-excel';
import { formatUpdateUserName } from '@/utils/audit'; import { formatUpdateUserName } from '@/utils/audit';
import { getToken } from '@/utils/auth'; import { getToken, isAdministrator } from '@/utils/auth';
import { normalizeSearchRangeParams } from '@/utils/search-range'; import { normalizeSearchRangeParams } from '@/utils/search-range';
import AddressMapPicker from '@/components/address-map-picker/main.vue'; import AddressMapPicker from '@/components/address-map-picker/main.vue';
import VehicleAttachmentTable from '@/components/vehicle-attachment-table/main.vue'; import VehicleAttachmentTable from '@/components/vehicle-attachment-table/main.vue';
@@ -220,6 +220,8 @@ const exportColumns = [
{ prop: 'nextMaintenanceTime', label: '下次保养时间' }, { prop: 'nextMaintenanceTime', label: '下次保养时间' },
{ prop: 'nextMaintenanceMileage', label: '下次保养里程/航程' }, { prop: 'nextMaintenanceMileage', label: '下次保养里程/航程' },
{ prop: 'remark', label: '备注' }, { prop: 'remark', label: '备注' },
{ prop: 'createUserName', label: '创建人' },
{ prop: 'createTime', label: '创建时间' },
]; ];
export default { export default {
@@ -436,6 +438,14 @@ export default {
slot: true, slot: true,
formslot: true, formslot: true,
}, },
{
label: '创建人',
prop: 'createUserName',
addDisplay: false,
editDisplay: false,
display: false,
minWidth: 120,
},
{ {
label: '创建时间', label: '创建时间',
prop: 'createTime', prop: 'createTime',
@@ -537,7 +547,7 @@ export default {
...mapGetters(['permission', 'userInfo']), ...mapGetters(['permission', 'userInfo']),
isAdmin() { isAdmin() {
const authority = this.userInfo.authority || ''; const authority = this.userInfo.authority || '';
return authority.includes('admin'); return isAdministrator(this.userInfo);
}, },
permissionList() { permissionList() {
return { return {
+12 -2
View File
@@ -167,7 +167,7 @@ import { exportBlob } from '@/api/common';
import { downloadXls } from '@/utils/util'; import { downloadXls } from '@/utils/util';
import { openImportDialog } from '@/utils/import-excel'; import { openImportDialog } from '@/utils/import-excel';
import { formatUpdateUserName } from '@/utils/audit'; import { formatUpdateUserName } from '@/utils/audit';
import { getToken } from '@/utils/auth'; import { getToken, isAdministrator } from '@/utils/auth';
import { normalizeSearchRangeParams } from '@/utils/search-range'; import { normalizeSearchRangeParams } from '@/utils/search-range';
import AddressMapPicker from '@/components/address-map-picker/main.vue'; import AddressMapPicker from '@/components/address-map-picker/main.vue';
import VehicleAttachmentTable from '@/components/vehicle-attachment-table/main.vue'; import VehicleAttachmentTable from '@/components/vehicle-attachment-table/main.vue';
@@ -193,6 +193,8 @@ const exportColumns = [
{ prop: 'factoryTime', label: '出厂时间' }, { prop: 'factoryTime', label: '出厂时间' },
{ prop: 'mileage', label: '里程/航程数' }, { prop: 'mileage', label: '里程/航程数' },
{ prop: 'remark', label: '备注' }, { prop: 'remark', label: '备注' },
{ prop: 'createUserName', label: '创建人' },
{ prop: 'createTime', label: '创建时间' },
]; ];
export default { export default {
@@ -409,6 +411,14 @@ export default {
slot: true, slot: true,
formslot: true, formslot: true,
}, },
{
label: '创建人',
prop: 'createUserName',
addDisplay: false,
editDisplay: false,
display: false,
minWidth: 120,
},
{ {
label: '创建时间', label: '创建时间',
prop: 'createTime', prop: 'createTime',
@@ -510,7 +520,7 @@ export default {
...mapGetters(['permission', 'userInfo']), ...mapGetters(['permission', 'userInfo']),
isAdmin() { isAdmin() {
const authority = this.userInfo.authority || ''; const authority = this.userInfo.authority || '';
return authority.includes('admin'); return isAdministrator(this.userInfo);
}, },
permissionList() { permissionList() {
return { return {
+2 -2
View File
@@ -209,7 +209,7 @@ import { getDeptTree } from '@/api/system/dept';
import { exportBlob } from '@/api/common'; import { exportBlob } from '@/api/common';
import { downloadXls } from '@/utils/util'; import { downloadXls } from '@/utils/util';
import { openImportDialog } from '@/utils/import-excel'; import { openImportDialog } from '@/utils/import-excel';
import { getToken } from '@/utils/auth'; import { getToken, isAdministrator } from '@/utils/auth';
import { normalizeSearchRangeParams } from '@/utils/search-range'; import { normalizeSearchRangeParams } from '@/utils/search-range';
import VehicleAttachmentTable from '@/components/vehicle-attachment-table/main.vue'; import VehicleAttachmentTable from '@/components/vehicle-attachment-table/main.vue';
import { mapGetters } from 'vuex'; import { mapGetters } from 'vuex';
@@ -255,7 +255,7 @@ export default {
...mapGetters(['permission', 'userInfo']), ...mapGetters(['permission', 'userInfo']),
isAdmin() { isAdmin() {
const authority = this.userInfo.authority || ''; const authority = this.userInfo.authority || '';
return authority.includes('admin'); return isAdministrator(this.userInfo);
}, },
permissionList() { permissionList() {
return { return {
+2 -2
View File
@@ -171,7 +171,7 @@ import { getDeptTree } from '@/api/system/dept';
import { exportBlob } from '@/api/common'; import { exportBlob } from '@/api/common';
import { downloadXls } from '@/utils/util'; import { downloadXls } from '@/utils/util';
import { openImportDialog } from '@/utils/import-excel'; import { openImportDialog } from '@/utils/import-excel';
import { getToken } from '@/utils/auth'; import { getToken, isAdministrator } from '@/utils/auth';
import VehicleAttachmentTable from '@/components/vehicle-attachment-table/main.vue'; import VehicleAttachmentTable from '@/components/vehicle-attachment-table/main.vue';
import { mapGetters } from 'vuex'; import { mapGetters } from 'vuex';
import { excelOption, exportColumns, option } from '@/option/vehicle/oil-electric-record'; import { excelOption, exportColumns, option } from '@/option/vehicle/oil-electric-record';
@@ -213,7 +213,7 @@ export default {
...mapGetters(['permission', 'userInfo']), ...mapGetters(['permission', 'userInfo']),
isAdmin() { isAdmin() {
const authority = this.userInfo.authority || ''; const authority = this.userInfo.authority || '';
return authority.includes('admin'); return isAdministrator(this.userInfo);
}, },
permissionList() { permissionList() {
return { return {
+2 -2
View File
@@ -141,7 +141,7 @@ import { getDictionary } from '@/api/system/dictbiz';
import { exportBlob } from '@/api/common'; import { exportBlob } from '@/api/common';
import { downloadXls } from '@/utils/util'; import { downloadXls } from '@/utils/util';
import { openImportDialog } from '@/utils/import-excel'; import { openImportDialog } from '@/utils/import-excel';
import { getToken } from '@/utils/auth'; import { getToken, isAdministrator } from '@/utils/auth';
import VehicleAttachmentTable from '@/components/vehicle-attachment-table/main.vue'; import VehicleAttachmentTable from '@/components/vehicle-attachment-table/main.vue';
import { mapGetters } from 'vuex'; import { mapGetters } from 'vuex';
import { excelOption, exportColumns, option } from '@/option/vehicle/other-expense-record'; import { excelOption, exportColumns, option } from '@/option/vehicle/other-expense-record';
@@ -184,7 +184,7 @@ export default {
...mapGetters(['permission', 'userInfo']), ...mapGetters(['permission', 'userInfo']),
isAdmin() { isAdmin() {
const authority = this.userInfo.authority || ''; const authority = this.userInfo.authority || '';
return authority.includes('admin'); return isAdministrator(this.userInfo);
}, },
permissionList() { permissionList() {
return { return {
@@ -154,7 +154,7 @@ import { getDeptTree } from '@/api/system/dept';
import { exportBlob } from '@/api/common'; import { exportBlob } from '@/api/common';
import { downloadXls } from '@/utils/util'; import { downloadXls } from '@/utils/util';
import { openImportDialog } from '@/utils/import-excel'; import { openImportDialog } from '@/utils/import-excel';
import { getToken } from '@/utils/auth'; import { getToken, isAdministrator } from '@/utils/auth';
import { normalizeSearchRangeParams } from '@/utils/search-range'; import { normalizeSearchRangeParams } from '@/utils/search-range';
import VehicleAttachmentTable from '@/components/vehicle-attachment-table/main.vue'; import VehicleAttachmentTable from '@/components/vehicle-attachment-table/main.vue';
import { mapGetters } from 'vuex'; import { mapGetters } from 'vuex';
@@ -200,7 +200,7 @@ export default {
...mapGetters(['permission', 'userInfo']), ...mapGetters(['permission', 'userInfo']),
isAdmin() { isAdmin() {
const authority = this.userInfo.authority || ''; const authority = this.userInfo.authority || '';
return authority.includes('admin'); return isAdministrator(this.userInfo);
}, },
permissionList() { permissionList() {
return { return {
@@ -129,7 +129,7 @@ import { getDeptTree } from '@/api/system/dept';
import { exportBlob } from '@/api/common'; import { exportBlob } from '@/api/common';
import { downloadXls } from '@/utils/util'; import { downloadXls } from '@/utils/util';
import { openImportDialog } from '@/utils/import-excel'; import { openImportDialog } from '@/utils/import-excel';
import { getToken } from '@/utils/auth'; import { getToken, isAdministrator } from '@/utils/auth';
import { normalizeSearchRangeParams } from '@/utils/search-range'; import { normalizeSearchRangeParams } from '@/utils/search-range';
import VehicleAttachmentTable from '@/components/vehicle-attachment-table/main.vue'; import VehicleAttachmentTable from '@/components/vehicle-attachment-table/main.vue';
import { mapGetters } from 'vuex'; import { mapGetters } from 'vuex';
@@ -176,7 +176,7 @@ export default {
...mapGetters(['permission', 'userInfo']), ...mapGetters(['permission', 'userInfo']),
isAdmin() { isAdmin() {
const authority = this.userInfo.authority || ''; const authority = this.userInfo.authority || '';
return authority.includes('admin'); return isAdministrator(this.userInfo);
}, },
permissionList() { permissionList() {
return { return {
+2 -2
View File
@@ -196,7 +196,7 @@ import { getDictionary } from '@/api/system/dictbiz';
import { exportBlob } from '@/api/common'; import { exportBlob } from '@/api/common';
import { downloadXls } from '@/utils/util'; import { downloadXls } from '@/utils/util';
import { openImportDialog } from '@/utils/import-excel'; import { openImportDialog } from '@/utils/import-excel';
import { getToken } from '@/utils/auth'; import { getToken, isAdministrator } from '@/utils/auth';
import { normalizeSearchRangeParams } from '@/utils/search-range'; import { normalizeSearchRangeParams } from '@/utils/search-range';
import AddressMapPicker from '@/components/address-map-picker/main.vue'; import AddressMapPicker from '@/components/address-map-picker/main.vue';
import VehicleAttachmentTable from '@/components/vehicle-attachment-table/main.vue'; import VehicleAttachmentTable from '@/components/vehicle-attachment-table/main.vue';
@@ -247,7 +247,7 @@ export default {
...mapGetters(['permission', 'userInfo']), ...mapGetters(['permission', 'userInfo']),
isAdmin() { isAdmin() {
const authority = this.userInfo.authority || ''; const authority = this.userInfo.authority || '';
return authority.includes('admin'); return isAdministrator(this.userInfo);
}, },
permissionList() { permissionList() {
return { return {