feat: enhance task status handling and validation in TableEmployee & fail comment
This commit is contained in:
parent
cce1eccf8c
commit
c64af9d992
3 changed files with 63 additions and 42 deletions
|
|
@ -30,6 +30,7 @@ const props = withDefaults(
|
|||
|
||||
const selectedEmployee = defineModel<
|
||||
(RequestWork & {
|
||||
taskStatus: TaskStatus;
|
||||
_template?: {
|
||||
id: string;
|
||||
templateName: string;
|
||||
|
|
@ -97,6 +98,16 @@ function goToRequestList(id: string) {
|
|||
|
||||
function handleCheckAll() {
|
||||
const arr = JSON.parse(JSON.stringify(props.rows));
|
||||
const shouldExclude = (status: TaskStatus, validate: boolean) =>
|
||||
validate
|
||||
? status === TaskStatus.Success ||
|
||||
status === TaskStatus.Complete ||
|
||||
status === TaskStatus.Redo
|
||||
: status === TaskStatus.Failed ||
|
||||
status === TaskStatus.Success ||
|
||||
status === TaskStatus.Complete ||
|
||||
status === TaskStatus.Redo;
|
||||
|
||||
const selectableTasks = arr.filter(
|
||||
(
|
||||
t: RequestWork & {
|
||||
|
|
@ -108,11 +119,7 @@ function handleCheckAll() {
|
|||
} | null;
|
||||
taskStatus: TaskStatus;
|
||||
},
|
||||
) =>
|
||||
t.taskStatus !== TaskStatus.Failed &&
|
||||
t.taskStatus !== TaskStatus.Success &&
|
||||
t.taskStatus !== TaskStatus.Complete &&
|
||||
t.taskStatus !== TaskStatus.Redo,
|
||||
) => !shouldExclude(t.taskStatus, props.validate),
|
||||
);
|
||||
|
||||
if (selectedEmployee.value.length !== selectableTasks.length) {
|
||||
|
|
@ -134,7 +141,7 @@ function handleCheck(
|
|||
},
|
||||
) {
|
||||
if (
|
||||
row.taskStatus === TaskStatus.Failed ||
|
||||
(!props.validate && row.taskStatus === TaskStatus.Failed) ||
|
||||
row.taskStatus === TaskStatus.Success ||
|
||||
row.taskStatus === TaskStatus.Complete ||
|
||||
row.taskStatus === TaskStatus.Redo ||
|
||||
|
|
@ -191,12 +198,18 @@ function handleCheck(
|
|||
:model-value="
|
||||
selectedEmployee.length > 0 &&
|
||||
selectedEmployee.length ===
|
||||
rows.filter(
|
||||
(t) =>
|
||||
t.taskStatus !== TaskStatus.Complete &&
|
||||
t.taskStatus !== TaskStatus.Success &&
|
||||
t.taskStatus !== TaskStatus.Failed,
|
||||
).length
|
||||
(validate
|
||||
? rows.filter(
|
||||
(t) =>
|
||||
t.taskStatus !== TaskStatus.Complete &&
|
||||
t.taskStatus !== TaskStatus.Success,
|
||||
).length
|
||||
: rows.filter(
|
||||
(t) =>
|
||||
t.taskStatus !== TaskStatus.Complete &&
|
||||
t.taskStatus !== TaskStatus.Success &&
|
||||
t.taskStatus !== TaskStatus.Failed,
|
||||
).length)
|
||||
"
|
||||
@click="handleCheckAll"
|
||||
size="sm"
|
||||
|
|
@ -213,6 +226,11 @@ function handleCheck(
|
|||
<q-menu :offset="[0, 4]">
|
||||
<q-list v-if="validate">
|
||||
<q-item
|
||||
v-if="
|
||||
!selectedEmployee.some(
|
||||
(e) => e.taskStatus === TaskStatus.Failed,
|
||||
)
|
||||
"
|
||||
clickable
|
||||
v-close-popup
|
||||
class="items-center"
|
||||
|
|
@ -336,7 +354,7 @@ function handleCheck(
|
|||
@click="handleCheck(props.row)"
|
||||
size="sm"
|
||||
:disable="
|
||||
props.row.taskStatus === TaskStatus.Failed ||
|
||||
(!validate && props.row.taskStatus === TaskStatus.Failed) ||
|
||||
props.row.taskStatus === TaskStatus.Success ||
|
||||
props.row.taskStatus === TaskStatus.Complete ||
|
||||
props.row.taskStatus === TaskStatus.Redo ||
|
||||
|
|
|
|||
|
|
@ -65,7 +65,7 @@ const fileData = ref<
|
|||
const refProductExpansion = ref<InstanceType<typeof ProductExpansion>>();
|
||||
const taskProduct = ref<{ productId: string; discount?: number }[]>([]);
|
||||
const view = ref<TaskOrderStatus>(TaskOrderStatus.Pending);
|
||||
const taskStatusList = ref<
|
||||
const taskStatusRecords = ref<
|
||||
{
|
||||
code?: string;
|
||||
requestWorkId: string;
|
||||
|
|
@ -86,6 +86,7 @@ const summaryPrice = computed(() => getPrice(taskListGroup.value));
|
|||
|
||||
const selectedEmployee = ref<
|
||||
(RequestWork & {
|
||||
taskStatus: TaskStatus;
|
||||
_template?: {
|
||||
id: string;
|
||||
templateName: string;
|
||||
|
|
@ -95,15 +96,6 @@ const selectedEmployee = ref<
|
|||
})[][][]
|
||||
>([]);
|
||||
const failedDialog = ref(false);
|
||||
const taskStatusRecords = ref<
|
||||
{
|
||||
requestWorkId: string;
|
||||
step: number;
|
||||
failedComment?: string;
|
||||
failedType?: string;
|
||||
code?: string;
|
||||
}[]
|
||||
>([]);
|
||||
|
||||
function getPrice(
|
||||
list: {
|
||||
|
|
@ -562,15 +554,18 @@ function openFailedDialog(
|
|||
};
|
||||
taskStatus: TaskStatus;
|
||||
},
|
||||
index: number,
|
||||
) {
|
||||
taskStatusList.value = [
|
||||
const task = fullTaskOrder.value?.taskList.find(
|
||||
(t) => t.requestWorkId === row.id,
|
||||
);
|
||||
|
||||
taskStatusRecords.value = [
|
||||
{
|
||||
code: `${row.productService.product.code}-${row.request.code}`,
|
||||
requestWorkId: row.id || '',
|
||||
step: row._template?.step || 0,
|
||||
failedComment: fullTaskOrder.value?.taskList[index].failedComment || '',
|
||||
failedType: fullTaskOrder.value?.taskList[index].failedType || '',
|
||||
failedComment: (task && task.failedComment) || '',
|
||||
failedType: (task && task.failedType) || '',
|
||||
},
|
||||
];
|
||||
pageState.failedDialog = true;
|
||||
|
|
@ -955,8 +950,18 @@ watch([currentFormData.value.taskStatus], () => {
|
|||
<TableEmployee
|
||||
validate
|
||||
step-on
|
||||
:checkbox-on="view === TaskOrderStatus.Validate"
|
||||
:check-all="view === TaskOrderStatus.Validate"
|
||||
:checkbox-on="
|
||||
view === TaskOrderStatus.Validate &&
|
||||
fullTaskOrder?.userTask.find(
|
||||
(l) => l.userId === v.responsibleUser.id,
|
||||
)?.userTaskStatus === UserTaskStatus.Submit
|
||||
"
|
||||
:check-all="
|
||||
view === TaskOrderStatus.Validate &&
|
||||
fullTaskOrder?.userTask.find(
|
||||
(l) => l.userId === v.responsibleUser.id,
|
||||
)?.userTaskStatus === UserTaskStatus.Submit
|
||||
"
|
||||
:rows="list"
|
||||
@change-all-status="
|
||||
(v) =>
|
||||
|
|
@ -975,16 +980,14 @@ watch([currentFormData.value.taskStatus], () => {
|
|||
:no-action="view !== TaskOrderStatus.Validate"
|
||||
type="order"
|
||||
:readonly="
|
||||
fullTaskOrder?.taskList[messengerIndex]
|
||||
.taskStatus === TaskStatus.Pending
|
||||
fullTaskOrder?.userTask.find(
|
||||
(l) => l.userId === v.responsibleUser.id,
|
||||
)?.userTaskStatus !== UserTaskStatus.Submit
|
||||
"
|
||||
:status="subProps.row.taskStatus"
|
||||
@click-failed="
|
||||
() => {
|
||||
openFailedDialog(
|
||||
subProps.row,
|
||||
subProps.rowIndex,
|
||||
);
|
||||
openFailedDialog(subProps.row);
|
||||
}
|
||||
"
|
||||
@change-status="
|
||||
|
|
@ -1008,12 +1011,12 @@ watch([currentFormData.value.taskStatus], () => {
|
|||
<FailRemarkDialog
|
||||
readonly
|
||||
:fail-task-option="list"
|
||||
v-model:set-task-status-list="taskStatusList"
|
||||
v-model:set-task-status-list="taskStatusRecords"
|
||||
v-model:open="pageState.failedDialog"
|
||||
@close="
|
||||
() => {
|
||||
pageState.failedDialog = false;
|
||||
taskStatusList = [];
|
||||
taskStatusRecords = [];
|
||||
}
|
||||
"
|
||||
/>
|
||||
|
|
|
|||
|
|
@ -619,17 +619,17 @@ watch([currentFormData.value.taskStatus], () => {
|
|||
:status="subProps.row.taskStatus"
|
||||
@click-failed="
|
||||
() => {
|
||||
const task = fullTaskOrder?.taskList.find(
|
||||
(t) => t.requestWorkId === subProps.row.id,
|
||||
);
|
||||
taskStatusRecords = [
|
||||
{
|
||||
code: `${subProps.row.productService.product.code}-${subProps.row.request.code}`,
|
||||
requestWorkId: subProps.row.id || '',
|
||||
step: subProps.row._template?.step || 0,
|
||||
failedComment:
|
||||
fullTaskOrder?.taskList[subProps.rowIndex]
|
||||
.failedComment || '',
|
||||
failedType:
|
||||
fullTaskOrder?.taskList[subProps.rowIndex]
|
||||
.failedType || '',
|
||||
(task && task.failedComment) || '',
|
||||
failedType: (task && task.failedType) || '',
|
||||
},
|
||||
];
|
||||
failedDialog = true;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue