fix(产品需求、项目需求): 修复权限码的语义问题。
This commit is contained in:
@@ -44,9 +44,12 @@
|
|||||||
"@sa/hooks": "workspace:*",
|
"@sa/hooks": "workspace:*",
|
||||||
"@sa/materials": "workspace:*",
|
"@sa/materials": "workspace:*",
|
||||||
"@sa/utils": "workspace:*",
|
"@sa/utils": "workspace:*",
|
||||||
|
"@univerjs/preset-sheets-core": "^0.25.0",
|
||||||
|
"@univerjs/presets": "^0.25.0",
|
||||||
"@vueuse/core": "13.9.0",
|
"@vueuse/core": "13.9.0",
|
||||||
"@wangeditor/editor": "^5.1.23",
|
"@wangeditor/editor": "^5.1.23",
|
||||||
"@wangeditor/editor-for-vue": "^5.1.12",
|
"@wangeditor/editor-for-vue": "^5.1.12",
|
||||||
|
"@zwight/luckyexcel": "^1.1.6",
|
||||||
"clipboard": "2.0.11",
|
"clipboard": "2.0.11",
|
||||||
"dayjs": "1.11.18",
|
"dayjs": "1.11.18",
|
||||||
"defu": "^6.1.4",
|
"defu": "^6.1.4",
|
||||||
|
|||||||
3607
pnpm-lock.yaml
generated
3607
pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load Diff
@@ -462,7 +462,7 @@ const columns = computed(() => [
|
|||||||
onClick: () => void;
|
onClick: () => void;
|
||||||
}[] = [];
|
}[] = [];
|
||||||
|
|
||||||
if (hasObjectAuth('project:product:query') && canViewReviewRecord(row)) {
|
if (hasObjectAuth('project:product:requirement:query') && canViewReviewRecord(row)) {
|
||||||
actions.push({
|
actions.push({
|
||||||
key: 'reviewRecord',
|
key: 'reviewRecord',
|
||||||
label: '查看评审记录',
|
label: '查看评审记录',
|
||||||
@@ -472,7 +472,7 @@ const columns = computed(() => [
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (hasObjectAuth('project:product:split') && canSplitRequirement(row)) {
|
if (hasObjectAuth('project:product:requirement:split') && canSplitRequirement(row)) {
|
||||||
actions.push({
|
actions.push({
|
||||||
key: 'split',
|
key: 'split',
|
||||||
label: '拆分',
|
label: '拆分',
|
||||||
@@ -482,7 +482,7 @@ const columns = computed(() => [
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (hasObjectAuth('project:product:update') && canEditRequirement(row)) {
|
if (hasObjectAuth('project:product:requirement:update') && canEditRequirement(row)) {
|
||||||
actions.push({
|
actions.push({
|
||||||
key: 'edit',
|
key: 'edit',
|
||||||
label: '编辑',
|
label: '编辑',
|
||||||
@@ -503,8 +503,8 @@ const columns = computed(() => [
|
|||||||
}
|
}
|
||||||
|
|
||||||
const lifecycleActions = getRowActions(row);
|
const lifecycleActions = getRowActions(row);
|
||||||
const hasReviewAuth = hasObjectAuth('project:product:review');
|
const hasReviewAuth = hasObjectAuth('project:product:requirement:review');
|
||||||
const hasStatusAuth = hasObjectAuth('project:product:status');
|
const hasStatusAuth = hasObjectAuth('project:product:requirement:status');
|
||||||
|
|
||||||
if (hasReviewAuth && lifecycleActions.some(action => isReviewAction(row, action))) {
|
if (hasReviewAuth && lifecycleActions.some(action => isReviewAction(row, action))) {
|
||||||
actions.push({
|
actions.push({
|
||||||
@@ -540,7 +540,7 @@ const columns = computed(() => [
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (canDeleteRequirement(row) && hasObjectAuth('project:product:delete')) {
|
if (canDeleteRequirement(row) && hasObjectAuth('project:product:requirement:delete')) {
|
||||||
actions.push({
|
actions.push({
|
||||||
key: 'delete',
|
key: 'delete',
|
||||||
label: '删除',
|
label: '删除',
|
||||||
@@ -922,7 +922,7 @@ onMounted(async () => {
|
|||||||
<TableHeaderOperation v-model:columns="columnChecks" :loading="loading" @refresh="reloadTable">
|
<TableHeaderOperation v-model:columns="columnChecks" :loading="loading" @refresh="reloadTable">
|
||||||
<template #default>
|
<template #default>
|
||||||
<ElButton
|
<ElButton
|
||||||
v-auth="{ code: 'project:product:create', source: 'object' }"
|
v-auth="{ code: 'project:product:requirement:create', source: 'object' }"
|
||||||
plain
|
plain
|
||||||
type="primary"
|
type="primary"
|
||||||
@click="openCreate"
|
@click="openCreate"
|
||||||
|
|||||||
@@ -45,12 +45,12 @@ const isRootModule = computed(() => props.module.id === props.rootModuleId);
|
|||||||
|
|
||||||
const hasAnyActionPermission = computed(() => {
|
const hasAnyActionPermission = computed(() => {
|
||||||
if (isRootModule.value) {
|
if (isRootModule.value) {
|
||||||
return hasObjectAuth('project:product:create');
|
return hasObjectAuth('project:product:requirement:create');
|
||||||
}
|
}
|
||||||
return (
|
return (
|
||||||
hasObjectAuth('project:product:create') ||
|
hasObjectAuth('project:product:requirement:create') ||
|
||||||
hasObjectAuth('project:product:update') ||
|
hasObjectAuth('project:product:requirement:update') ||
|
||||||
hasObjectAuth('project:product:delete')
|
hasObjectAuth('project:product:requirement:delete')
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -163,18 +163,22 @@ function handleToggle() {
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div v-if="!isEditing && hasAnyActionPermission" class="module-tree-item__actions" @click.stop>
|
<div v-if="!isEditing && hasAnyActionPermission" class="module-tree-item__actions" @click.stop>
|
||||||
<ElTooltip v-if="hasObjectAuth('project:product:create')" content="新增子模块" placement="top">
|
<ElTooltip v-if="hasObjectAuth('project:product:requirement:create')" content="新增子模块" placement="top">
|
||||||
<ElButton link type="primary" class="module-tree-item__action-btn" @click="handleStartAddChild">
|
<ElButton link type="primary" class="module-tree-item__action-btn" @click="handleStartAddChild">
|
||||||
<icon-mdi-plus class="text-14px" />
|
<icon-mdi-plus class="text-14px" />
|
||||||
</ElButton>
|
</ElButton>
|
||||||
</ElTooltip>
|
</ElTooltip>
|
||||||
<ElTooltip v-if="!isRootModule && hasObjectAuth('project:product:update')" content="编辑" placement="top">
|
<ElTooltip
|
||||||
|
v-if="!isRootModule && hasObjectAuth('project:product:requirement:update')"
|
||||||
|
content="编辑"
|
||||||
|
placement="top"
|
||||||
|
>
|
||||||
<ElButton link type="primary" class="module-tree-item__action-btn" @click="handleStartEdit">
|
<ElButton link type="primary" class="module-tree-item__action-btn" @click="handleStartEdit">
|
||||||
<icon-mdi-pencil-outline class="text-14px" />
|
<icon-mdi-pencil-outline class="text-14px" />
|
||||||
</ElButton>
|
</ElButton>
|
||||||
</ElTooltip>
|
</ElTooltip>
|
||||||
<ElPopconfirm
|
<ElPopconfirm
|
||||||
v-if="!isRootModule && canDeleteModule && hasObjectAuth('project:product:delete')"
|
v-if="!isRootModule && canDeleteModule && hasObjectAuth('project:product:requirement:delete')"
|
||||||
title="确定删除该模块吗?"
|
title="确定删除该模块吗?"
|
||||||
@confirm="handleDelete"
|
@confirm="handleDelete"
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -234,12 +234,12 @@ function buildRequirementActions(row: Api.Project.ProjectRequirement) {
|
|||||||
onClick: () => void;
|
onClick: () => void;
|
||||||
}> = [];
|
}> = [];
|
||||||
|
|
||||||
const hasUpdateAuth = hasObjectAuth('project:project:update');
|
const hasUpdateAuth = hasObjectAuth('project:project:requirement:update');
|
||||||
const hasDeleteAuth = hasObjectAuth('project:project:delete');
|
const hasDeleteAuth = hasObjectAuth('project:project:requirement:delete');
|
||||||
const hasStatusAuth = hasObjectAuth('project:project:status');
|
const hasStatusAuth = hasObjectAuth('project:project:requirement:status');
|
||||||
const hasSplitAuth = hasObjectAuth('project:project:split');
|
const hasSplitAuth = hasObjectAuth('project:project:requirement:split');
|
||||||
const hasQueryAuth = hasObjectAuth('project:project:query');
|
const hasQueryAuth = hasObjectAuth('project:project:requirement:query');
|
||||||
const hasReviewAuth = hasObjectAuth('project:project:review');
|
const hasReviewAuth = hasObjectAuth('project:project:requirement:review');
|
||||||
const lifecycleActions = getRowActions(row);
|
const lifecycleActions = getRowActions(row);
|
||||||
|
|
||||||
if (hasQueryAuth && canViewReviewRecord(row)) {
|
if (hasQueryAuth && canViewReviewRecord(row)) {
|
||||||
@@ -892,7 +892,7 @@ Promise.all([loadStatusOptions()]);
|
|||||||
<TableHeaderOperation v-model:columns="columnChecks" :loading="loading" @refresh="reloadTable">
|
<TableHeaderOperation v-model:columns="columnChecks" :loading="loading" @refresh="reloadTable">
|
||||||
<template #default>
|
<template #default>
|
||||||
<ElButton
|
<ElButton
|
||||||
v-auth="{ code: 'project:project:create', source: 'object' }"
|
v-auth="{ code: 'project:project:requirement:create', source: 'object' }"
|
||||||
plain
|
plain
|
||||||
type="primary"
|
type="primary"
|
||||||
@click="openCreate"
|
@click="openCreate"
|
||||||
|
|||||||
@@ -45,12 +45,12 @@ const isRootModule = computed(() => props.module.id === props.rootModuleId);
|
|||||||
|
|
||||||
const hasAnyActionPermission = computed(() => {
|
const hasAnyActionPermission = computed(() => {
|
||||||
if (isRootModule.value) {
|
if (isRootModule.value) {
|
||||||
return hasObjectAuth('project:project:create');
|
return hasObjectAuth('project:project:requirement:create');
|
||||||
}
|
}
|
||||||
return (
|
return (
|
||||||
hasObjectAuth('project:project:create') ||
|
hasObjectAuth('project:project:requirement:create') ||
|
||||||
hasObjectAuth('project:project:update') ||
|
hasObjectAuth('project:project:requirement:update') ||
|
||||||
hasObjectAuth('project:project:delete')
|
hasObjectAuth('project:project:requirement:delete')
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -146,18 +146,22 @@ function handleToggle() {
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div v-if="!isEditing && hasAnyActionPermission" class="module-tree-item__actions" @click.stop>
|
<div v-if="!isEditing && hasAnyActionPermission" class="module-tree-item__actions" @click.stop>
|
||||||
<ElTooltip v-if="hasObjectAuth('project:project:create')" content="新增子模块" placement="top">
|
<ElTooltip v-if="hasObjectAuth('project:project:requirement:create')" content="新增子模块" placement="top">
|
||||||
<ElButton link type="primary" class="module-tree-item__action-btn" @click="emit('addChild', module)">
|
<ElButton link type="primary" class="module-tree-item__action-btn" @click="emit('addChild', module)">
|
||||||
<icon-mdi-plus class="text-14px" />
|
<icon-mdi-plus class="text-14px" />
|
||||||
</ElButton>
|
</ElButton>
|
||||||
</ElTooltip>
|
</ElTooltip>
|
||||||
<ElTooltip v-if="!isRootModule && hasObjectAuth('project:project:update')" content="编辑" placement="top">
|
<ElTooltip
|
||||||
|
v-if="!isRootModule && hasObjectAuth('project:project:requirement:update')"
|
||||||
|
content="编辑"
|
||||||
|
placement="top"
|
||||||
|
>
|
||||||
<ElButton link type="primary" class="module-tree-item__action-btn" @click="emit('edit', module)">
|
<ElButton link type="primary" class="module-tree-item__action-btn" @click="emit('edit', module)">
|
||||||
<icon-mdi-pencil-outline class="text-14px" />
|
<icon-mdi-pencil-outline class="text-14px" />
|
||||||
</ElButton>
|
</ElButton>
|
||||||
</ElTooltip>
|
</ElTooltip>
|
||||||
<ElPopconfirm
|
<ElPopconfirm
|
||||||
v-if="!isRootModule && canDeleteModule && hasObjectAuth('project:project:delete')"
|
v-if="!isRootModule && canDeleteModule && hasObjectAuth('project:project:requirement:delete')"
|
||||||
title="确定删除该模块吗?"
|
title="确定删除该模块吗?"
|
||||||
@confirm="emit('delete', module)"
|
@confirm="emit('delete', module)"
|
||||||
>
|
>
|
||||||
|
|||||||
Reference in New Issue
Block a user