fix(功能用例): 用例评审-刷新脑图时模块树数量不是最新的
This commit is contained in:
parent
695f18fe47
commit
510bea2c95
|
@ -142,6 +142,7 @@
|
|||
import { useI18n } from '@/hooks/useI18n';
|
||||
import { useUserStore } from '@/store';
|
||||
import useAppStore from '@/store/modules/app';
|
||||
import useCaseReviewStore from '@/store/modules/case/caseReview';
|
||||
import useMinderStore from '@/store/modules/components/minder-editor/index';
|
||||
import { findNodeByKey, mapTree, replaceNodeInTree } from '@/utils';
|
||||
import { hasAnyPermission } from '@/utils/permission';
|
||||
|
@ -150,7 +151,6 @@
|
|||
CaseReviewFunctionalCaseUserItem,
|
||||
ReviewHistoryItem,
|
||||
ReviewPassRule,
|
||||
ReviewResult as ReviewResultStatus,
|
||||
} from '@/models/caseManagement/caseReview';
|
||||
import { ModuleTreeNode } from '@/models/common';
|
||||
import { MinderEventName } from '@/enums/minderEnum';
|
||||
|
@ -159,7 +159,6 @@
|
|||
|
||||
const props = defineProps<{
|
||||
moduleId: string;
|
||||
modulesCount: Record<string, number>; // 模块数量
|
||||
viewFlag: boolean; // 是否只看我的
|
||||
viewStatusFlag: boolean; // 我的评审结果
|
||||
reviewProgress: string;
|
||||
|
@ -177,6 +176,7 @@
|
|||
const { t } = useI18n();
|
||||
const minderStore = useMinderStore();
|
||||
const userStore = useUserStore();
|
||||
const caseReviewStore = useCaseReviewStore();
|
||||
|
||||
const statusTagMap: Record<string, string> = {
|
||||
PASS: t('common.pass'),
|
||||
|
@ -193,6 +193,8 @@
|
|||
});
|
||||
const loading = ref(false);
|
||||
|
||||
const modulesCount = computed(() => caseReviewStore.modulesCount);
|
||||
|
||||
/**
|
||||
* 初始化用例模块树
|
||||
*/
|
||||
|
@ -203,13 +205,13 @@
|
|||
...e.data,
|
||||
id: e.id || e.data?.id || '',
|
||||
text: e.name || e.data?.text || '',
|
||||
resource: props.modulesCount[e.id] !== undefined ? [moduleTag] : e.data?.resource,
|
||||
resource: modulesCount.value[e.id] !== undefined ? [moduleTag] : e.data?.resource,
|
||||
expandState: e.level === 0 ? 'expand' : 'collapse',
|
||||
count: props.modulesCount[e.id],
|
||||
count: modulesCount.value[e.id],
|
||||
disabled: true,
|
||||
},
|
||||
children:
|
||||
props.modulesCount[e.id] > 0 && !e.children?.length
|
||||
modulesCount.value[e.id] > 0 && !e.children?.length
|
||||
? [
|
||||
{
|
||||
data: {
|
||||
|
|
|
@ -116,7 +116,7 @@ export interface ReviewListQueryParams extends TableQueryParams {
|
|||
export interface ReviewDetailCaseListQueryParams extends TableQueryParams {
|
||||
viewFlag: boolean; // 是否只看我的
|
||||
reviewId: string;
|
||||
viewStatusFlag: boolean; // 我的评审状态
|
||||
viewStatusFlag?: boolean; // 我的评审状态
|
||||
}
|
||||
// 评审详情-用例拖拽排序入参
|
||||
export interface SortReviewCaseParams {
|
||||
|
|
|
@ -0,0 +1,25 @@
|
|||
import { defineStore } from 'pinia';
|
||||
|
||||
import { getReviewDetailModuleCount } from '@/api/modules/case-management/caseReview';
|
||||
|
||||
import type { ReviewDetailCaseListQueryParams } from '@/models/caseManagement/caseReview';
|
||||
|
||||
const useCaseReviewStore = defineStore('caseReview', {
|
||||
state: (): {
|
||||
modulesCount: Record<string, any>; // 用例树模块数量
|
||||
} => ({
|
||||
modulesCount: {},
|
||||
}),
|
||||
actions: {
|
||||
async getModuleCount(params: ReviewDetailCaseListQueryParams) {
|
||||
try {
|
||||
this.modulesCount = await getReviewDetailModuleCount(params);
|
||||
} catch (error) {
|
||||
// eslint-disable-next-line no-console
|
||||
console.log(error);
|
||||
}
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
export default useCaseReviewStore;
|
|
@ -5,7 +5,7 @@
|
|||
v-model:keyword="keyword"
|
||||
:filter-config-list="filterConfigList"
|
||||
:row-count="filterRowCount"
|
||||
:count="props.modulesCount[props.activeFolder] || 0"
|
||||
:count="modulesCount[props.activeFolder] || 0"
|
||||
:name="moduleNamePath"
|
||||
:not-show-input-search="showType !== 'list'"
|
||||
:search-placeholder="t('caseManagement.caseReview.searchPlaceholder')"
|
||||
|
@ -139,7 +139,6 @@
|
|||
:view-flag="props.onlyMine"
|
||||
:view-status-flag="onlyMineStatus"
|
||||
:module-tree="props.moduleTree"
|
||||
:modules-count="props.modulesCount"
|
||||
:review-progress="props.reviewProgress"
|
||||
:review-pass-rule="props.reviewPassRule"
|
||||
@operation="handleMinderOperation"
|
||||
|
@ -332,12 +331,13 @@
|
|||
import useModal from '@/hooks/useModal';
|
||||
import useTableStore from '@/hooks/useTableStore';
|
||||
import useAppStore from '@/store/modules/app';
|
||||
import useCaseReviewStore from '@/store/modules/case/caseReview';
|
||||
import useUserStore from '@/store/modules/user';
|
||||
import { characterLimit, findNodeByKey } from '@/utils';
|
||||
import { hasAnyPermission } from '@/utils/permission';
|
||||
|
||||
import { ReviewCaseItem, ReviewItem, ReviewPassRule, ReviewResult } from '@/models/caseManagement/caseReview';
|
||||
import { BatchApiParams, ModuleTreeNode } from '@/models/common';
|
||||
import { BatchApiParams, ModuleTreeNode, TableQueryParams } from '@/models/common';
|
||||
import { CaseManagementRouteEnum } from '@/enums/routeEnum';
|
||||
import { TableKeyEnum } from '@/enums/tableEnum';
|
||||
import { FilterSlotNameEnum } from '@/enums/tableFilterEnum';
|
||||
|
@ -355,10 +355,9 @@
|
|||
reviewPassRule: ReviewPassRule; // 评审规则
|
||||
offspringIds: string[]; // 当前选中节点的所有子节点id
|
||||
moduleTree: ModuleTreeNode[];
|
||||
modulesCount: Record<string, number>; // 模块数量
|
||||
reviewProgress: string; // 评审进度
|
||||
}>();
|
||||
const emit = defineEmits(['init', 'refresh', 'link']);
|
||||
const emit = defineEmits(['refresh', 'link']);
|
||||
|
||||
const router = useRouter();
|
||||
const route = useRoute();
|
||||
|
@ -367,6 +366,7 @@
|
|||
const userStore = useUserStore();
|
||||
const { t } = useI18n();
|
||||
const { openModal } = useModal();
|
||||
const caseReviewStore = useCaseReviewStore();
|
||||
|
||||
const minderSelectData = ref<MinderJsonNodeData>(); // 当前脑图选中的数据
|
||||
const minderParams = ref();
|
||||
|
@ -514,6 +514,23 @@
|
|||
],
|
||||
};
|
||||
|
||||
const modulesCount = computed(() => caseReviewStore.modulesCount);
|
||||
async function getModuleCount() {
|
||||
let params: TableQueryParams;
|
||||
if (showType.value === 'list') {
|
||||
params = {
|
||||
...tableParams.value,
|
||||
current: propsRes.value.msPagination?.current,
|
||||
pageSize: propsRes.value.msPagination?.pageSize,
|
||||
total: propsRes.value.msPagination?.total,
|
||||
moduleIds: [],
|
||||
};
|
||||
} else {
|
||||
params = { moduleIds: [props.activeFolder], projectId: appStore.currentProjectId, pageSize: 10, current: 1 };
|
||||
}
|
||||
await caseReviewStore.getModuleCount({ ...params, viewFlag: props.onlyMine, reviewId: route.query.id as string });
|
||||
}
|
||||
|
||||
function searchCase(filter?: FilterResult) {
|
||||
tableParams.value = {
|
||||
projectId: appStore.currentProjectId,
|
||||
|
@ -530,13 +547,7 @@
|
|||
setLoadListParams(tableParams.value);
|
||||
resetSelector();
|
||||
loadList();
|
||||
emit('init', {
|
||||
...tableParams.value,
|
||||
current: propsRes.value.msPagination?.current,
|
||||
pageSize: propsRes.value.msPagination?.pageSize,
|
||||
total: propsRes.value.msPagination?.total,
|
||||
moduleIds: [],
|
||||
});
|
||||
getModuleCount();
|
||||
}
|
||||
|
||||
onBeforeMount(() => {
|
||||
|
@ -547,7 +558,7 @@
|
|||
* 更新数据
|
||||
* @param getCount 获取模块树数量
|
||||
*/
|
||||
function refresh(getCount = true) {
|
||||
async function refresh(getCount = true) {
|
||||
if (showType.value === 'list') {
|
||||
if (getCount) {
|
||||
searchCase();
|
||||
|
@ -556,34 +567,10 @@
|
|||
loadList();
|
||||
}
|
||||
} else {
|
||||
msCaseReviewMinderRef.value?.initCaseTree();
|
||||
if (getCount) {
|
||||
emit('init', {
|
||||
moduleIds: [props.activeFolder],
|
||||
projectId: appStore.currentProjectId,
|
||||
pageSize: 10,
|
||||
current: 1,
|
||||
});
|
||||
await getModuleCount();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function emitRefresh() {
|
||||
if (showType.value === 'list') {
|
||||
emit('refresh', {
|
||||
...tableParams.value,
|
||||
current: propsRes.value.msPagination?.current,
|
||||
pageSize: propsRes.value.msPagination?.pageSize,
|
||||
total: propsRes.value.msPagination?.total,
|
||||
moduleIds: [],
|
||||
});
|
||||
} else {
|
||||
emit('refresh', {
|
||||
moduleIds: [props.activeFolder],
|
||||
projectId: appStore.currentProjectId,
|
||||
pageSize: 10,
|
||||
current: 1,
|
||||
});
|
||||
msCaseReviewMinderRef.value?.initCaseTree();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -607,7 +594,7 @@
|
|||
if (val === 'minder') {
|
||||
keyword.value = '';
|
||||
// 切换到脑图刷新模块统计
|
||||
emit('init', { moduleIds: [props.activeFolder], projectId: appStore.currentProjectId, pageSize: 10, current: 1 });
|
||||
getModuleCount();
|
||||
} else {
|
||||
searchCase();
|
||||
}
|
||||
|
@ -663,12 +650,13 @@
|
|||
try {
|
||||
disassociateLoading.value = true;
|
||||
await disassociateReviewCase(route.query.id as string, record.caseId);
|
||||
emitRefresh();
|
||||
emit('refresh');
|
||||
if (done) {
|
||||
done();
|
||||
}
|
||||
Message.success(t('caseManagement.caseReview.disassociateSuccess'));
|
||||
loadList();
|
||||
getModuleCount();
|
||||
} catch (error) {
|
||||
// eslint-disable-next-line no-console
|
||||
console.log(error);
|
||||
|
@ -731,8 +719,9 @@
|
|||
});
|
||||
Message.success(t('common.updateSuccess'));
|
||||
dialogLoading.value = false;
|
||||
refresh(false);
|
||||
emitRefresh();
|
||||
refresh();
|
||||
emit('refresh');
|
||||
// TODO: 模块树选中返回上一级
|
||||
} catch (error) {
|
||||
// eslint-disable-next-line no-console
|
||||
console.log(error);
|
||||
|
@ -789,7 +778,7 @@
|
|||
Message.success(t('common.updateSuccess'));
|
||||
dialogVisible.value = false;
|
||||
refresh(false);
|
||||
emitRefresh();
|
||||
emit('refresh');
|
||||
} catch (error) {
|
||||
// eslint-disable-next-line no-console
|
||||
console.log(error);
|
||||
|
@ -852,7 +841,7 @@
|
|||
Message.success(t('caseManagement.caseReview.reviewSuccess'));
|
||||
dialogVisible.value = false;
|
||||
resetSelector();
|
||||
emitRefresh();
|
||||
emit('refresh');
|
||||
loadList();
|
||||
} catch (error) {
|
||||
// eslint-disable-next-line no-console
|
||||
|
@ -925,7 +914,7 @@
|
|||
|
||||
function handleReviewDone() {
|
||||
refresh(false);
|
||||
emitRefresh();
|
||||
emit('refresh');
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -128,7 +128,6 @@
|
|||
:modules-count="modulesCount"
|
||||
:review-progress="reviewProgress"
|
||||
:module-tree="moduleTree"
|
||||
@init="initModulesCount"
|
||||
@refresh="handleRefresh"
|
||||
@link="associateDrawerVisible = true"
|
||||
></CaseTable>
|
||||
|
@ -165,23 +164,14 @@
|
|||
import deleteReviewModal from './components/index/deleteReviewModal.vue';
|
||||
import passRateLine from './components/passRateLine.vue';
|
||||
|
||||
import {
|
||||
associateReviewCase,
|
||||
followReview,
|
||||
getReviewDetail,
|
||||
getReviewDetailModuleCount,
|
||||
} from '@/api/modules/case-management/caseReview';
|
||||
import { associateReviewCase, followReview, getReviewDetail } from '@/api/modules/case-management/caseReview';
|
||||
import { reviewDefaultDetail } from '@/config/caseManagement';
|
||||
import { useI18n } from '@/hooks/useI18n';
|
||||
import useAppStore from '@/store/modules/app';
|
||||
import useCaseReviewStore from '@/store/modules/case/caseReview';
|
||||
import useUserStore from '@/store/modules/user';
|
||||
|
||||
import type {
|
||||
BaseAssociateCaseRequest,
|
||||
ReviewDetailCaseListQueryParams,
|
||||
ReviewItem,
|
||||
ReviewStatus,
|
||||
} from '@/models/caseManagement/caseReview';
|
||||
import type { BaseAssociateCaseRequest, ReviewItem, ReviewStatus } from '@/models/caseManagement/caseReview';
|
||||
import { ModuleTreeNode } from '@/models/common';
|
||||
import { CaseManagementRouteEnum } from '@/enums/routeEnum';
|
||||
|
||||
|
@ -190,6 +180,7 @@
|
|||
const userStore = useUserStore();
|
||||
const appStore = useAppStore();
|
||||
const { t } = useI18n();
|
||||
const caseReviewStore = useCaseReviewStore();
|
||||
|
||||
const loading = ref(false);
|
||||
const reviewDetail = ref<ReviewItem>({
|
||||
|
@ -221,20 +212,7 @@
|
|||
// },
|
||||
// ]);
|
||||
|
||||
const modulesCount = ref<Record<string, any>>({});
|
||||
|
||||
async function getModuleCount(params: ReviewDetailCaseListQueryParams) {
|
||||
try {
|
||||
modulesCount.value = await getReviewDetailModuleCount({
|
||||
...params,
|
||||
viewFlag: onlyMine.value,
|
||||
reviewId: reviewId.value,
|
||||
});
|
||||
} catch (error) {
|
||||
// eslint-disable-next-line no-console
|
||||
console.log(error);
|
||||
}
|
||||
}
|
||||
const modulesCount = computed(() => caseReviewStore.modulesCount);
|
||||
|
||||
const folderTreeRef = ref<InstanceType<typeof CaseTree>>();
|
||||
const activeFolderId = ref<string>('all');
|
||||
|
@ -251,10 +229,6 @@
|
|||
caseTableRef.value?.resetSelector();
|
||||
}
|
||||
|
||||
function initModulesCount(params: ReviewDetailCaseListQueryParams) {
|
||||
getModuleCount(params);
|
||||
}
|
||||
|
||||
const associateDrawerVisible = ref(false);
|
||||
const associateDrawerProject = ref(appStore.currentProjectId);
|
||||
|
||||
|
@ -396,8 +370,7 @@
|
|||
});
|
||||
}
|
||||
|
||||
function handleRefresh(params: ReviewDetailCaseListQueryParams) {
|
||||
initModulesCount(params);
|
||||
function handleRefresh() {
|
||||
initDetail();
|
||||
folderTreeRef.value?.initModules();
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue