From 75d059f15a6f161b5b3d8af52bd734148e720091 Mon Sep 17 00:00:00 2001 From: dap <15891557205@163.com> Date: Wed, 18 Dec 2024 14:10:50 +0800 Subject: [PATCH] =?UTF-8?q?chore:=20=E6=B5=81=E7=A8=8B=E7=9B=91=E6=8E=A7?= =?UTF-8?q?=20-=20=E5=BE=85=E5=8A=9E=E4=BB=BB=E5=8A=A1=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E7=9A=84id=E4=B8=8D=E5=94=AF=E4=B8=80=20=E6=94=B9=E4=B8=BA?= =?UTF-8?q?=E5=89=8D=E7=AB=AF=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../workflow/components/approval-card.vue | 11 ++++- .../views/workflow/task/allTaskWaiting.vue | 43 ++++++++++++++----- 2 files changed, 41 insertions(+), 13 deletions(-) diff --git a/apps/web-antd/src/views/workflow/components/approval-card.vue b/apps/web-antd/src/views/workflow/components/approval-card.vue index 5b8f3bc0..9702adec 100644 --- a/apps/web-antd/src/views/workflow/components/approval-card.vue +++ b/apps/web-antd/src/views/workflow/components/approval-card.vue @@ -12,12 +12,19 @@ interface Props extends TaskInfo { active: boolean; } -const props = withDefaults(defineProps<{ info: Props }>(), {}); +const props = withDefaults(defineProps<{ info: Props; rowKey?: string }>(), { + rowKey: 'id', +}); const emit = defineEmits<{ click: [string] }>(); +/** + * TODO: 这里要优化 事件没有用到 + */ function handleClick() { - emit('click', props.info.id); + console.log('click'); + const idKey = props.rowKey as keyof TaskInfo; + emit('click', props.info[idKey]); } diff --git a/apps/web-antd/src/views/workflow/task/allTaskWaiting.vue b/apps/web-antd/src/views/workflow/task/allTaskWaiting.vue index 1d726cd3..4a1d6e5c 100644 --- a/apps/web-antd/src/views/workflow/task/allTaskWaiting.vue +++ b/apps/web-antd/src/views/workflow/task/allTaskWaiting.vue @@ -8,7 +8,7 @@ import { Page } from '@vben/common-ui'; import { useTabs } from '@vben/hooks'; import { Empty, InputSearch, Segmented } from 'ant-design-vue'; -import { debounce } from 'lodash-es'; +import { debounce, uniqueId } from 'lodash-es'; import { flowInfo } from '#/api/workflow/instance'; import { pageByAllTaskFinish, pageByAllTaskWait } from '#/api/workflow/task'; @@ -17,7 +17,15 @@ import { ApprovalCard, ApprovalPanel } from '../components'; const emptyImage = Empty.PRESENTED_IMAGE_SIMPLE; -const taskList = ref<({ active: boolean } & TaskInfo)[]>([]); +/** + * 流程监控 - 待办任务页面的id不唯一 改为前端处理 + */ +interface TaskItem extends TaskInfo { + active: boolean; + randomId: string; +} + +const taskList = ref([]); const taskTotal = ref(0); const page = ref(1); @@ -41,7 +49,11 @@ const approvalType = computed(() => { async function handleTypeChange() { page.value = 1; const resp = await currentApi.value({ pageSize: 10, pageNum: page.value }); - taskList.value = resp.rows.map((item) => ({ ...item, active: false })); + taskList.value = resp.rows.map((item) => ({ + ...item, + active: false, + randomId: uniqueId(), + })); taskTotal.value = resp.total; // eslint-disable-next-line no-use-before-define currentTask.value = undefined; @@ -60,7 +72,11 @@ onMounted(async () => { */ const resp = await currentApi.value({ pageSize: 10, pageNum: page.value }); console.log(resp); - taskList.value = resp.rows.map((item) => ({ ...item, active: false })); + taskList.value = resp.rows.map((item) => ({ + ...item, + active: false, + randomId: uniqueId(), + })); taskTotal.value = resp.total; }); @@ -80,7 +96,11 @@ const handleScroll = debounce(async (e: Event) => { page.value += 1; const resp = await currentApi.value({ pageSize: 10, pageNum: page.value }); taskList.value.push( - ...resp.rows.map((item) => ({ ...item, active: false })), + ...resp.rows.map((item) => ({ + ...item, + active: false, + randomId: uniqueId(), + })), ); } }, 200); @@ -89,18 +109,18 @@ const currentInstance = ref(); const lastSelectId = ref(''); const currentTask = ref(); -async function handleCardClick(item: TaskInfo) { - const { id, businessId } = item; +async function handleCardClick(item: TaskItem) { + const { randomId, businessId } = item; // 点击的是同一个 - if (lastSelectId.value === id) { + if (lastSelectId.value === randomId) { return; } currentTask.value = item; // 反选状态 & 如果已经点击了 不变 & 保持只能有一个选中 taskList.value.forEach((item) => { - item.active = item.id === id; + item.active = item.randomId === randomId; }); - lastSelectId.value = id; + lastSelectId.value = randomId; const resp = await flowInfo(businessId); currentInstance.value = resp; @@ -135,9 +155,10 @@ const { refreshTab } = useTabs();