diff --git a/src/components/semri/deptUserComponent/SzDeptUserModal.vue b/src/components/semri/deptUserComponent/SzDeptUserModal.vue index 1941035..3038559 100644 --- a/src/components/semri/deptUserComponent/SzDeptUserModal.vue +++ b/src/components/semri/deptUserComponent/SzDeptUserModal.vue @@ -114,7 +114,7 @@ async function loadUsersByUsernames(valueStr: string) { url: '/sys/user/queryUserComponentData', params: { [paramKey]: valueStr, isMultiTranslate: 'true', pageNo: 1, pageSize: 9999 }, }); - innerSelectedUsers.value = [...(res.records || res)]; + innerSelectedUsers.value = (res.records || res).filter((u: UserItem) => !u.username.toLowerCase().includes('admin')); } catch { innerSelectedUsers.value = []; } diff --git a/src/components/semri/deptUserComponent/SzDeptUserSelect.vue b/src/components/semri/deptUserComponent/SzDeptUserSelect.vue index f77ba0e..877382a 100644 --- a/src/components/semri/deptUserComponent/SzDeptUserSelect.vue +++ b/src/components/semri/deptUserComponent/SzDeptUserSelect.vue @@ -205,11 +205,7 @@ async function loadData(arg?: number) { loading.value = true; try { const res: any = await defHttp.get({ url: url.pageUserDepart, params }); - dataSource.value = (res.records || []).filter((user: UserItem) => { - const userLevel = user.userSecurityLevel; - const docLevel = props.secLevel; - return userLevel !== null && userLevel > docLevel; - }); + dataSource.value = (res.records || []).filter((user: UserItem) => !user.username.toLowerCase().includes('admin')); ipagination.total = res.total; } finally { loading.value = false; @@ -267,11 +263,7 @@ async function getAllUsersInDepart() { const filteredParam = filterObj(param); try { const res: any = await defHttp.get({ url: url.listUserDepart, params: filteredParam }); - allUserList.value = (res.records || res).filter((user: UserItem) => { - const userLevel = user.userSecurityLevel; - const docLevel = props.secLevel; - return userLevel !== null && userLevel > docLevel; - }); + allUserList.value = (res.records || res).filter((user: UserItem) => !user.username.toLowerCase().includes('admin')); } catch (e) { allUserList.value = []; } diff --git a/src/views/dashboard/ProcessPortal/components/MyWork.vue b/src/views/dashboard/ProcessPortal/components/MyWork.vue index d83bc29..03c9ea7 100644 --- a/src/views/dashboard/ProcessPortal/components/MyWork.vue +++ b/src/views/dashboard/ProcessPortal/components/MyWork.vue @@ -10,6 +10,7 @@
我的抄送
+ 更多 @@ -62,7 +63,7 @@ import HeaderCell from '/@/components/Table/src/components/HeaderCell.vue'; import { useListPage } from '/@/hooks/system/useListPage'; import { useModal } from '/@/components/Modal'; - import { RightOutlined, QuestionCircleOutlined } from '@ant-design/icons-vue'; + import { RightOutlined, QuestionCircleOutlined, ReloadOutlined } from '@ant-design/icons-vue'; import { Tooltip } from 'ant-design-vue'; import TaskHandleModal from '/@/views/super/bpm/process/personalOffice/myHandleTask/modal/TaskHandleModal.vue'; import SelectEntrusterModal from '/@/views/super/bpm/process/personalOffice/myHandleTask/modal/SelectEntrusterModal.vue'; @@ -81,6 +82,9 @@ const router = useRouter(); const activeTab = ref<'todo' | 'cc'>('todo'); const todoTotal = ref(0); + const refreshing = ref(false); + + const emit = defineEmits(['refresh']); const { tableContext: todoContext } = useListPage({ designScope: 'process-portal-todo', @@ -131,6 +135,17 @@ } } + async function handleRefresh() { + refreshing.value = true; + try { + reloadTodo(); + await fetchTodoTotal(); + emit('refresh'); + } finally { + refreshing.value = false; + } + } + function goMore() { if (activeTab.value === 'todo') { router.push('/task/myTodoTaskInfo'); @@ -286,6 +301,32 @@ margin: 0; } + &__refresh { + font-size: 14px; + color: rgba(0, 0, 0, 0.45); + cursor: pointer; + transition: color 0.2s; + + &:hover { + color: @primary-color; + } + + &--spinning { + animation: spin 0.8s linear infinite; + color: @primary-color; + cursor: default; + } + } + + @keyframes spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } + } + &__actions { display: flex; align-items: center; diff --git a/src/views/dashboard/ProcessPortal/components/StatCards.vue b/src/views/dashboard/ProcessPortal/components/StatCards.vue index b7c686b..2f8aa19 100644 --- a/src/views/dashboard/ProcessPortal/components/StatCards.vue +++ b/src/views/dashboard/ProcessPortal/components/StatCards.vue @@ -93,7 +93,7 @@ }, ]); - onMounted(async () => { + async function loadStats() { try { const res = await getProcessPortalStats(); if (res) { @@ -104,7 +104,13 @@ } finally { loading.value = false; } + } + + onMounted(() => { + loadStats(); }); + + defineExpose({ refresh: loadStats });