diff --git a/src/pages/09_task-order/order_view/MainPage.vue b/src/pages/09_task-order/order_view/MainPage.vue index 218f6748..6ffd5ade 100644 --- a/src/pages/09_task-order/order_view/MainPage.vue +++ b/src/pages/09_task-order/order_view/MainPage.vue @@ -19,8 +19,6 @@ import { SaveButton, MainButton, EditButton } from 'src/components/button'; import FormGroupHead from 'src/pages/08_request-list/FormGroupHead.vue'; import FailRemarkDialog from '../receive_view/FailRemarkDialog.vue'; -import { taskStatusOpts } from '../constants'; - import SelectReadyRequestWork from '../SelectReadyRequestWork.vue'; import { dialogWarningClose } from 'stores/utils'; import useOptionStore from 'src/stores/options'; @@ -37,15 +35,12 @@ import { UserTaskStatus, } from 'src/stores/task-order/types'; import { RequestWork } from 'src/stores/request-list'; -import { precisionRound } from 'src/utils/arithmetic'; -import { getUserId } from 'src/services/keycloak'; const taskOrderFormStore = useTaskOrderForm(); const taskOrderStore = useTaskOrderStore(); const route = useRoute(); const router = useRouter(); const configStore = useConfigStore(); -const optionStore = useOptionStore(); const { data: config } = storeToRefs(configStore); const { t } = useI18n(); @@ -662,6 +657,33 @@ function handleChangeStatus( }); } +function sortList( + list: (RequestWork & { + _template?: { + id: string; + templateName: string; + templateStepName: string; + step: number; + responsibleInstitution: (string | { group: string })[]; + } | null; + taskStatus: TaskStatus; + })[], +) { + const prioritizedStatuses = new Set([ + TaskStatus.InProgress, + TaskStatus.Redo, + TaskStatus.Success, + TaskStatus.Complete, + TaskStatus.Canceled, + ]); + + return list.sort((a, b) => { + const aPriority = prioritizedStatuses.has(a.taskStatus) ? 1 : 0; + const bPriority = prioritizedStatuses.has(b.taskStatus) ? 1 : 0; + return aPriority - bPriority; + }); +} + watch([currentFormData.value.taskStatus], () => { fetchStatus(); }); @@ -1009,7 +1031,7 @@ watch([currentFormData.value.taskStatus], () => { (l) => l.userId === v.responsibleUser.id, )?.userTaskStatus === UserTaskStatus.Submit " - :rows="list" + :rows="sortList(list)" @change-all-status=" (v) => handleChangeStatus( diff --git a/src/pages/09_task-order/receive_view/MainPage.vue b/src/pages/09_task-order/receive_view/MainPage.vue index 3a4c125d..90f29b1e 100644 --- a/src/pages/09_task-order/receive_view/MainPage.vue +++ b/src/pages/09_task-order/receive_view/MainPage.vue @@ -313,6 +313,35 @@ function taskStatusCount(index: number, id: string) { } } +function sortList( + list: (RequestWork & { + _template?: { + id: string; + templateName: string; + templateStepName: string; + step: number; + } | null; + taskStatus?: TaskStatus; + })[], +) { + const prioritizedStatuses = new Set([ + TaskStatus.Failed, + TaskStatus.Success, + TaskStatus.Complete, + TaskStatus.Redo, + TaskStatus.Validate, + TaskStatus.Canceled, + ]); + + return list.sort((a, b) => { + const aPriority = + a.taskStatus && prioritizedStatuses.has(a.taskStatus) ? 1 : 0; + const bPriority = + b.taskStatus && prioritizedStatuses.has(b.taskStatus) ? 1 : 0; + return aPriority - bPriority; + }); +} + onMounted(async () => { initTheme(); initLang(); @@ -607,7 +636,7 @@ watch([currentFormData.value.taskStatus], () => { ) " step-on - :rows="list" + :rows="sortList(list)" @change-all-status="(v) => handleChangeStatus(v, i)" v-model:selected-employee="selectedEmployee[i]" >