|
|
|
@ -1,15 +1,15 @@
|
|
|
|
|
<script lang="ts" setup>
|
|
|
|
|
import { onMounted, onUnmounted, reactive, ref, watch } from "vue";
|
|
|
|
|
import { throttle } from "lodash-es";
|
|
|
|
|
import { useInfiniteScroll } from "@vueuse/core";
|
|
|
|
|
import { useMessage } from "naive-ui";
|
|
|
|
|
import ApprovalModal from "../modal/ApprovalModal.vue";
|
|
|
|
|
import ListItem from "./ListItem.vue";
|
|
|
|
|
import { deletePackage } from "@/api/home/main";
|
|
|
|
|
import { useWorkOrder } from "@/store/modules/workOrder";
|
|
|
|
|
import { isEmpty } from "@/utils";
|
|
|
|
|
import type { PackageListItem } from "/#/workorder";
|
|
|
|
|
import NotPassed from "@/components/NotPassed.vue";
|
|
|
|
|
import { onMounted, onUnmounted, reactive, ref, watch } from 'vue'
|
|
|
|
|
import { throttle } from 'lodash-es'
|
|
|
|
|
import { useInfiniteScroll } from '@vueuse/core'
|
|
|
|
|
import { useMessage } from 'naive-ui'
|
|
|
|
|
import ApprovalModal from '../modal/ApprovalModal.vue'
|
|
|
|
|
import ListItem from './ListItem.vue'
|
|
|
|
|
import { deletePackage } from '@/api/home/main'
|
|
|
|
|
import { useWorkOrder } from '@/store/modules/workOrder'
|
|
|
|
|
import { isEmpty } from '@/utils'
|
|
|
|
|
import type { PackageListItem } from '/#/workorder'
|
|
|
|
|
import NotPassed from '@/components/NotPassed.vue'
|
|
|
|
|
|
|
|
|
|
defineProps({
|
|
|
|
|
showFieldList: {
|
|
|
|
@ -20,57 +20,59 @@ defineProps({
|
|
|
|
|
type: Array,
|
|
|
|
|
default: () => [],
|
|
|
|
|
},
|
|
|
|
|
});
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
const emit = defineEmits(["ApprovalOver"]);
|
|
|
|
|
const emit = defineEmits(['ApprovalOver'])
|
|
|
|
|
|
|
|
|
|
const workStore = useWorkOrder();
|
|
|
|
|
const data = ref<PackageListItem[]>([]);
|
|
|
|
|
const activeId = ref("");
|
|
|
|
|
const el = ref<HTMLDivElement | null>(null);
|
|
|
|
|
const keyword = ref("");
|
|
|
|
|
const canloadMore = ref(true);
|
|
|
|
|
const isLoading = ref(false);
|
|
|
|
|
const workStore = useWorkOrder()
|
|
|
|
|
const data = ref<PackageListItem[]>([])
|
|
|
|
|
const activeId = ref('')
|
|
|
|
|
const el = ref<HTMLDivElement | null>(null)
|
|
|
|
|
const keyword = ref('')
|
|
|
|
|
const canloadMore = ref(true)
|
|
|
|
|
const isLoading = ref(false)
|
|
|
|
|
|
|
|
|
|
const pagination = reactive({
|
|
|
|
|
pageNo: 0,
|
|
|
|
|
pageSize: 10,
|
|
|
|
|
});
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
const approvalModalRef: any = ref(null);
|
|
|
|
|
const notPassedRef: any = ref(null);
|
|
|
|
|
const overTask = ref<any>(null);
|
|
|
|
|
const approvalModalRef: any = ref(null)
|
|
|
|
|
const notPassedRef: any = ref(null)
|
|
|
|
|
const overTask = ref<any>(null)
|
|
|
|
|
|
|
|
|
|
function selectHandler(id: string, index: number) {
|
|
|
|
|
// console.log('selectHandler',id)
|
|
|
|
|
workStore.setActive(index);
|
|
|
|
|
workStore.setActive(index)
|
|
|
|
|
// showModal(approvalModalRef, id)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
useInfiniteScroll(
|
|
|
|
|
el as any,
|
|
|
|
|
() => {
|
|
|
|
|
loadMore();
|
|
|
|
|
loadMore()
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
distance: 10,
|
|
|
|
|
interval: 1500,
|
|
|
|
|
canLoadMore: () => canloadMore.value,
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
},
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
async function loadMore() {
|
|
|
|
|
if (isLoading.value || el.value == null) return;
|
|
|
|
|
isLoading.value = true;
|
|
|
|
|
if (isLoading.value || el.value == null)
|
|
|
|
|
return
|
|
|
|
|
isLoading.value = true
|
|
|
|
|
try {
|
|
|
|
|
const more = await fetchList();
|
|
|
|
|
const more = await fetchList()
|
|
|
|
|
more.forEach((ele) => {
|
|
|
|
|
ele.search = JSON.parse(ele.search);
|
|
|
|
|
ele.search = JSON.parse(ele.search)
|
|
|
|
|
// ele.search.createTime = ele.search.submit_date_timestamp
|
|
|
|
|
});
|
|
|
|
|
data.value.push(...more);
|
|
|
|
|
} finally {
|
|
|
|
|
isLoading.value = false;
|
|
|
|
|
})
|
|
|
|
|
data.value.push(...more)
|
|
|
|
|
}
|
|
|
|
|
finally {
|
|
|
|
|
isLoading.value = false
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -82,112 +84,117 @@ async function loadMore() {
|
|
|
|
|
|
|
|
|
|
async function fetchList() {
|
|
|
|
|
try {
|
|
|
|
|
pagination.pageNo += 1;
|
|
|
|
|
const result = await workStore.fetchOrderList(pagination, keyword.value);
|
|
|
|
|
const { data, pageCount } = result;
|
|
|
|
|
if (pageCount !== 0) canloadMore.value = pageCount >= pagination.pageNo;
|
|
|
|
|
else canloadMore.value = false;
|
|
|
|
|
pagination.pageNo += 1
|
|
|
|
|
const result = await workStore.fetchOrderList(pagination, keyword.value)
|
|
|
|
|
const { data, pageCount } = result
|
|
|
|
|
if (pageCount !== 0)
|
|
|
|
|
canloadMore.value = pageCount >= pagination.pageNo
|
|
|
|
|
else canloadMore.value = false
|
|
|
|
|
|
|
|
|
|
return data || [];
|
|
|
|
|
} catch (error) {
|
|
|
|
|
canloadMore.value = false;
|
|
|
|
|
return [];
|
|
|
|
|
return data || []
|
|
|
|
|
}
|
|
|
|
|
catch (error) {
|
|
|
|
|
canloadMore.value = false
|
|
|
|
|
return []
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
watch(
|
|
|
|
|
() => workStore.activeId,
|
|
|
|
|
(newVal) => {
|
|
|
|
|
if (isEmpty(newVal)) return;
|
|
|
|
|
activeId.value = newVal;
|
|
|
|
|
approvalModalRef.value.showModal(workStore.dataId);
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
if (isEmpty(newVal))
|
|
|
|
|
return
|
|
|
|
|
activeId.value = newVal
|
|
|
|
|
approvalModalRef.value.showModal(workStore.dataId)
|
|
|
|
|
},
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
function reset() {
|
|
|
|
|
pagination.pageNo = 0;
|
|
|
|
|
pagination.pageSize = 10;
|
|
|
|
|
canloadMore.value = true;
|
|
|
|
|
data.value.length = 0;
|
|
|
|
|
pagination.pageNo = 0
|
|
|
|
|
pagination.pageSize = 10
|
|
|
|
|
canloadMore.value = true
|
|
|
|
|
data.value.length = 0
|
|
|
|
|
|
|
|
|
|
workStore.reset();
|
|
|
|
|
workStore.reset()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function notPass(value) {
|
|
|
|
|
notPassedRef.value.showModal(value);
|
|
|
|
|
notPassedRef.value.showModal(value)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
async function search(word: string) {
|
|
|
|
|
keyword.value = word;
|
|
|
|
|
reset();
|
|
|
|
|
keyword.value = word
|
|
|
|
|
reset()
|
|
|
|
|
useInfiniteScroll(
|
|
|
|
|
el as any,
|
|
|
|
|
() => {
|
|
|
|
|
loadMore();
|
|
|
|
|
loadMore()
|
|
|
|
|
},
|
|
|
|
|
{ distance: 10, canLoadMore: () => canloadMore.value }
|
|
|
|
|
);
|
|
|
|
|
{ distance: 10, canLoadMore: () => canloadMore.value },
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
function overTaskHandelr(item: any) {
|
|
|
|
|
overTask.value = item;
|
|
|
|
|
overTask.value = item
|
|
|
|
|
}
|
|
|
|
|
function leaveTaskHandler(event) {
|
|
|
|
|
if (event?.relatedTarget?.id !== "taskPopconfirmRef") overTask.value = null;
|
|
|
|
|
if (event?.relatedTarget?.id !== 'taskPopconfirmRef')
|
|
|
|
|
overTask.value = null
|
|
|
|
|
}
|
|
|
|
|
const message = useMessage();
|
|
|
|
|
const message = useMessage()
|
|
|
|
|
function dismisClick(packageId: string) {
|
|
|
|
|
deletePackage({ packageId }).then((res) => {
|
|
|
|
|
if (res.code === "OK") {
|
|
|
|
|
message.success("解散任务包成功");
|
|
|
|
|
reset();
|
|
|
|
|
loadMore();
|
|
|
|
|
if (res.code === 'OK') {
|
|
|
|
|
message.success('解散任务包成功')
|
|
|
|
|
reset()
|
|
|
|
|
loadMore()
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
function ApprovalOver(packageId) {
|
|
|
|
|
emit("ApprovalOver", packageId);
|
|
|
|
|
emit('ApprovalOver', packageId)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
defineExpose({
|
|
|
|
|
search,
|
|
|
|
|
});
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
const onKeydown = throttle((event) => {
|
|
|
|
|
const eles = ["INPUT", "TEXTAREA"];
|
|
|
|
|
if (eles.includes(event.target.tagName)) return;
|
|
|
|
|
const eles = ['INPUT', 'TEXTAREA']
|
|
|
|
|
if (eles.includes(event.target.tagName))
|
|
|
|
|
return
|
|
|
|
|
|
|
|
|
|
if (event.defaultPrevented) return; // 如果已取消默认操作,则不应执行任何操作
|
|
|
|
|
if (event.defaultPrevented)
|
|
|
|
|
return // 如果已取消默认操作,则不应执行任何操作
|
|
|
|
|
|
|
|
|
|
const handled = false;
|
|
|
|
|
const handled = false
|
|
|
|
|
if (event.key !== undefined) {
|
|
|
|
|
// 使用 KeyboardEvent.key 处理事件,并将 handled 设置为 true。
|
|
|
|
|
} else if (event.keyCode !== undefined) {
|
|
|
|
|
}
|
|
|
|
|
else if (event.keyCode !== undefined) {
|
|
|
|
|
// 使用 KeyboardEvent.keyCode 处理事件并将 handled 设置为 true。
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (handled) {
|
|
|
|
|
// 如果事件已处理,则禁止“双重操作”
|
|
|
|
|
event.preventDefault();
|
|
|
|
|
}
|
|
|
|
|
if (event.key === "ArrowUp") {
|
|
|
|
|
const prev = data.value[workStore.currentIndex - 1]?.id;
|
|
|
|
|
if (prev) selectHandler(prev, workStore.currentIndex - 1);
|
|
|
|
|
event.preventDefault()
|
|
|
|
|
}
|
|
|
|
|
if (event.key === "ArrowDown") {
|
|
|
|
|
const next = data.value[workStore.currentIndex + 1]?.id;
|
|
|
|
|
if (next) selectHandler(next, workStore.currentIndex + 1);
|
|
|
|
|
if (event.key === 'ArrowLeft') {
|
|
|
|
|
const prev = data.value[workStore.currentIndex - 1]?.id
|
|
|
|
|
if (prev)
|
|
|
|
|
selectHandler(prev, workStore.currentIndex - 1)
|
|
|
|
|
}
|
|
|
|
|
if (event.key === "ArrowRight" || event.key === "ArrowLeft") {
|
|
|
|
|
if (activeId.value) activeId.value = "";
|
|
|
|
|
else activeId.value = data.value[workStore.currentIndex]?.checkDuplicateId;
|
|
|
|
|
if (event.key === 'ArrowRight') {
|
|
|
|
|
const next = data.value[workStore.currentIndex + 1]?.id
|
|
|
|
|
if (next)
|
|
|
|
|
selectHandler(next, workStore.currentIndex + 1)
|
|
|
|
|
}
|
|
|
|
|
}, 500);
|
|
|
|
|
}, 500)
|
|
|
|
|
onMounted(() => {
|
|
|
|
|
document.addEventListener("keydown", onKeydown, true);
|
|
|
|
|
});
|
|
|
|
|
document.addEventListener('keydown', onKeydown, true)
|
|
|
|
|
})
|
|
|
|
|
onUnmounted(() => {
|
|
|
|
|
document.removeEventListener("keydown", onKeydown);
|
|
|
|
|
});
|
|
|
|
|
document.removeEventListener('keydown', onKeydown)
|
|
|
|
|
})
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
<template>
|
|
|
|
|