feat(execution): 实现执行模块视角切换和快捷过滤功能
- 添加执行视角切换功能(my/all),支持不同身份维度查看 - 实现逾期/本周到期快捷过滤功能,提升执行管理效率 - 重构执行区域UI布局,优化用户体验和界面结构 - 集成Element Plus表单验证,在用户选择器组件中使用 - 优化执行状态筛选和计数逻辑,提升数据展示准确性 - 实现执行视角切换时的数据同步刷新机制 - 添加执行完成操作的二次确认对话框 - 重构权限码检查逻辑,统一使用query权限码进行控制 - 移除auth store依赖,精简代码结构 - 优化执行状态看板和任务计数的加载机制 - 实现执行创建和编辑流程的状态同步更新 - 统一任务工作区的执行范围传递方式,提高性能 - 添加执行详情面板的操作按钮权限控制 - 优化执行删除后的数据刷新逻辑,确保视图一致性
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
<script setup lang="ts">
|
||||
import { computed, nextTick, onBeforeUnmount, onMounted, ref, watch } from 'vue';
|
||||
import { useFormItem } from 'element-plus';
|
||||
import BusinessFormDialog from '@/components/custom/business-form-dialog.vue';
|
||||
import { usePickerSelection } from './business-user-picker/composables/use-picker-selection';
|
||||
import { useDeptSource } from './business-user-picker/composables/use-dept-source';
|
||||
@@ -51,6 +52,8 @@ const emit = defineEmits<Emits>();
|
||||
const model = defineModel<string | string[] | null>({ default: null });
|
||||
const visible = defineModel<boolean>('visible', { default: false });
|
||||
|
||||
const { formItem } = useFormItem();
|
||||
|
||||
const source = ref<Source>(props.sources[0] ?? 'all');
|
||||
const currentNodeId = ref<string | null>(null);
|
||||
const treeSearch = ref('');
|
||||
@@ -75,10 +78,22 @@ const showTabs = computed(() => props.sources.length > 1);
|
||||
|
||||
const userByIdMap = computed(() => new Map(props.userOptions.map(u => [String(u.id), u])));
|
||||
|
||||
const committedIds = computed<string[]>(() => {
|
||||
const value = model.value;
|
||||
|
||||
if (Array.isArray(value)) {
|
||||
return value.map(String);
|
||||
}
|
||||
|
||||
if (typeof value === 'string' && value) {
|
||||
return [value];
|
||||
}
|
||||
|
||||
return [];
|
||||
});
|
||||
|
||||
const selectedUsers = computed(() =>
|
||||
selection.selectedIds.value
|
||||
.map(id => userByIdMap.value.get(id))
|
||||
.filter((u): u is Api.SystemManage.UserSimple => Boolean(u))
|
||||
committedIds.value.map(id => userByIdMap.value.get(id)).filter((u): u is Api.SystemManage.UserSimple => Boolean(u))
|
||||
);
|
||||
|
||||
const lockedSelectedIds = computed(() => selection.selectedIds.value.filter(id => disabledUserIdSet.value.has(id)));
|
||||
@@ -203,6 +218,9 @@ function handleConfirm() {
|
||||
emit('change', value);
|
||||
emit('confirm', { userIds: selection.selectedIds.value });
|
||||
visible.value = false;
|
||||
nextTick(() => {
|
||||
formItem?.validate?.('change').catch(() => {});
|
||||
});
|
||||
}
|
||||
|
||||
function handleCancel() {
|
||||
|
||||
Reference in New Issue
Block a user