feat: 09 => add sorting functionality for task status in order and receive views
This commit is contained in:
parent
d6dcc71931
commit
199a008095
2 changed files with 58 additions and 7 deletions
|
|
@ -19,8 +19,6 @@ import { SaveButton, MainButton, EditButton } from 'src/components/button';
|
||||||
import FormGroupHead from 'src/pages/08_request-list/FormGroupHead.vue';
|
import FormGroupHead from 'src/pages/08_request-list/FormGroupHead.vue';
|
||||||
import FailRemarkDialog from '../receive_view/FailRemarkDialog.vue';
|
import FailRemarkDialog from '../receive_view/FailRemarkDialog.vue';
|
||||||
|
|
||||||
import { taskStatusOpts } from '../constants';
|
|
||||||
|
|
||||||
import SelectReadyRequestWork from '../SelectReadyRequestWork.vue';
|
import SelectReadyRequestWork from '../SelectReadyRequestWork.vue';
|
||||||
import { dialogWarningClose } from 'stores/utils';
|
import { dialogWarningClose } from 'stores/utils';
|
||||||
import useOptionStore from 'src/stores/options';
|
import useOptionStore from 'src/stores/options';
|
||||||
|
|
@ -37,15 +35,12 @@ import {
|
||||||
UserTaskStatus,
|
UserTaskStatus,
|
||||||
} from 'src/stores/task-order/types';
|
} from 'src/stores/task-order/types';
|
||||||
import { RequestWork } from 'src/stores/request-list';
|
import { RequestWork } from 'src/stores/request-list';
|
||||||
import { precisionRound } from 'src/utils/arithmetic';
|
|
||||||
import { getUserId } from 'src/services/keycloak';
|
|
||||||
|
|
||||||
const taskOrderFormStore = useTaskOrderForm();
|
const taskOrderFormStore = useTaskOrderForm();
|
||||||
const taskOrderStore = useTaskOrderStore();
|
const taskOrderStore = useTaskOrderStore();
|
||||||
const route = useRoute();
|
const route = useRoute();
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const configStore = useConfigStore();
|
const configStore = useConfigStore();
|
||||||
const optionStore = useOptionStore();
|
|
||||||
const { data: config } = storeToRefs(configStore);
|
const { data: config } = storeToRefs(configStore);
|
||||||
const { t } = useI18n();
|
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], () => {
|
watch([currentFormData.value.taskStatus], () => {
|
||||||
fetchStatus();
|
fetchStatus();
|
||||||
});
|
});
|
||||||
|
|
@ -1009,7 +1031,7 @@ watch([currentFormData.value.taskStatus], () => {
|
||||||
(l) => l.userId === v.responsibleUser.id,
|
(l) => l.userId === v.responsibleUser.id,
|
||||||
)?.userTaskStatus === UserTaskStatus.Submit
|
)?.userTaskStatus === UserTaskStatus.Submit
|
||||||
"
|
"
|
||||||
:rows="list"
|
:rows="sortList(list)"
|
||||||
@change-all-status="
|
@change-all-status="
|
||||||
(v) =>
|
(v) =>
|
||||||
handleChangeStatus(
|
handleChangeStatus(
|
||||||
|
|
|
||||||
|
|
@ -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 () => {
|
onMounted(async () => {
|
||||||
initTheme();
|
initTheme();
|
||||||
initLang();
|
initLang();
|
||||||
|
|
@ -607,7 +636,7 @@ watch([currentFormData.value.taskStatus], () => {
|
||||||
)
|
)
|
||||||
"
|
"
|
||||||
step-on
|
step-on
|
||||||
:rows="list"
|
:rows="sortList(list)"
|
||||||
@change-all-status="(v) => handleChangeStatus(v, i)"
|
@change-all-status="(v) => handleChangeStatus(v, i)"
|
||||||
v-model:selected-employee="selectedEmployee[i]"
|
v-model:selected-employee="selectedEmployee[i]"
|
||||||
>
|
>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue