feat: 09 => add sorting functionality for task status in order and receive views

This commit is contained in:
puriphatt 2025-01-21 14:41:01 +07:00
parent d6dcc71931
commit 199a008095
2 changed files with 58 additions and 7 deletions

View file

@ -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(

View file

@ -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]"
>