diff --git a/src/assets/icons/t9.svg b/src/assets/icons/t9.svg new file mode 100644 index 0000000..3a07171 --- /dev/null +++ b/src/assets/icons/t9.svg @@ -0,0 +1,45 @@ + + + 可疑文件夹 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/components/DataHeader/index.vue b/src/components/DataHeader/index.vue index 86ff8b2..8c42ca5 100644 --- a/src/components/DataHeader/index.vue +++ b/src/components/DataHeader/index.vue @@ -82,7 +82,7 @@ const data = [ margin-bottom: 1rem; .header_item { - width: 10%; + min-width: 10%; display: flex; flex-flow: row nowrap; align-items: center; @@ -92,6 +92,7 @@ const data = [ height: 2.75rem !important; } .data_wrap { + margin-left: .8125rem; .data_title { font-size: 1.125rem; font-family: HarmonyOS Sans SC, HarmonyOS Sans SC-Bold; diff --git a/src/views/home/aside/comp/AdvanceFilter.vue b/src/views/home/aside/comp/AdvanceFilter.vue index 67fc318..a882283 100644 --- a/src/views/home/aside/comp/AdvanceFilter.vue +++ b/src/views/home/aside/comp/AdvanceFilter.vue @@ -414,7 +414,7 @@ defineExpose({ align-items: center; position: absolute; left: 0; - top: 0; + top: -5px; width: 100%; padding: 12px 16px; border-bottom: 1px solid #e8e8e8; diff --git a/src/views/task/aside/Aside.vue b/src/views/task/aside/Aside.vue index 80baa8d..16a90f6 100644 --- a/src/views/task/aside/Aside.vue +++ b/src/views/task/aside/Aside.vue @@ -21,7 +21,8 @@ import { getAllfieldList, getfieldList } from '@/api/home/filter' import { useTaskStore } from '@/store/modules/task' import emitter from '@/utils/mitt' import { useConfig } from '@/store/modules/asideConfig' - +import { getConditionList } from "@/api/home/filter"; +import type { FilterSearchParam } from "/#/api"; const CustomFieldModalRef = ref(null) const collapse = ref(false) const taskStore = useTaskStore() @@ -129,8 +130,33 @@ async function getshowFieldList() { onMounted(() => { getshowFieldList() + window.addEventListener("keydown", handleKeydown); + init() }) - +async function init(){ + try { + const searchParam: FilterSearchParam = { + search_searchname: { value: "", op: "like", type: "string" }, + }; + const result = await getConditionList(1, searchParam,2); + const { data } = result; + if(data[0]){ + AdvanceFilterRef.value.setCurrentlySelectedAdvanced(data[0].searchname); + setTimeout(() => { + filterHandler(data[0].id) + }, 1000); + //filterHandler(data[0].id); + } + // pagination.pageNo += 1 + + } catch (error) { + return []; + } finally { + } + //currentlySelectedAdvanced.value="邱霞" +} +function handleKeydown(event) { + if (event.key === "s") setShowSearch(true)} // 滚动容器,让key对应模块处于可视区域 function scrollHandler(key: string) { const element = document.querySelector(`#${key}`) diff --git a/src/views/task/content/Content.vue b/src/views/task/content/Content.vue index f7c2738..050a734 100644 --- a/src/views/task/content/Content.vue +++ b/src/views/task/content/Content.vue @@ -36,8 +36,9 @@ import { hideDownload } from "@/utils/image"; const emit = defineEmits(["setAsideItemName"]); const router = useRouter(); - +const loading = ref(false); const batch = ref(false); +const batchtwo = ref(false); const selectItems = ref([]); const message = useMessage(); const dialog = useDialog(); @@ -74,6 +75,7 @@ const taskpagination = reactive({ }); const taskStore = useTask(); const overTask = ref(null); +const overTasktwo = ref(null); const taskDetailInfo = ref({}); const taskDetailPictureList = ref([]); const userStore = useUser(); @@ -92,6 +94,7 @@ const fullscreenStyles = computed(() => ({ onMounted(() => { window.addEventListener("keydown", handleKeydown); + if (route.query.id) { taskId.value = route.query.id; packageId.value = route.query.packageid; @@ -100,12 +103,77 @@ onMounted(() => { } }); +let lastKeyPressTime = 0; +let keyPressTimer = null; +const doubleClickInterval = 300; // 可以自定义间隔时间,单位是毫秒 // 键盘左右箭头快捷切换 function handleKeydown(event) { if (event.key === "ArrowLeft") backHandler(); // 在这里执行左箭头的逻辑 else if (event.key === "ArrowRight") forwardHandler(); // 在这里执行右箭头的逻辑 + else if (event.keyCode === 67) { + isFullScreen.value = false; + + // batchModalRef.value.closeModal() + } else if (event.key === "p" || event.key === "P") { + // 获取当前时间 + const now = Date.now(); + + // 如果两次按键时间间隔小于我们设定的双击间隔,则认为是双击 + if (now - lastKeyPressTime < doubleClickInterval) { + // 清除已经设置的定时器(如果有的话) + clearTimeout(keyPressTimer); + const item = taskDetailInfo.value; + if (item?.userapprove?.statshis === 2 || item?.userapprove?.statshis == 3) { + overTask.value = null; + return; + } + + if (validate([item]) == null && batch.value === false) overTask.value = item; + // 执行想要的操作 + approvalHandler(); + + // 重置上次按键时间 + lastKeyPressTime = 0; + } else { + // 如果不是双击,则更新上次按键时间,并开始一个新的计时器 + lastKeyPressTime = now; + + // 通过定时器重置上次按键时间 + // 这可以防止如果用户只按了一次键,也会触发双击的情况 + clearTimeout(keyPressTimer); + keyPressTimer = setTimeout(function () { + lastKeyPressTime = 0; + }, doubleClickInterval); + } + } else if (event.key === "x" || event.key === "X") { + // 获取当前时间 + const now = Date.now(); + + // 如果两次按键时间间隔小于我们设定的双击间隔,则认为是双击 + if (now - lastKeyPressTime < doubleClickInterval) { + // 清除已经设置的定时器(如果有的话) + clearTimeout(keyPressTimer); + + // 执行想要的操作 + const modal = unref(notPassModalRef)! as any; + modal.showModal([taskDetailInfo.value]); + + // 重置上次按键时间 + lastKeyPressTime = 0; + } else { + // 如果不是双击,则更新上次按键时间,并开始一个新的计时器 + lastKeyPressTime = now; + + // 通过定时器重置上次按键时间 + // 这可以防止如果用户只按了一次键,也会触发双击的情况 + clearTimeout(keyPressTimer); + keyPressTimer = setTimeout(function () { + lastKeyPressTime = 0; + }, doubleClickInterval); + } + } } function setBatch(value: boolean) { @@ -407,6 +475,15 @@ function getrowValue(e) { ); } } +function overTaskHandelr(item: any) { + if (item?.historyStates === 2 || item?.historyStates == 3) { + overTasktwo.value = null; + return; + } + + if (validate([item]) == null && batchtwo.value === false) + overTasktwo.value = item; +}