|
|
|
|
@ -47,7 +47,7 @@
|
|
|
|
|
<el-col :span="12">
|
|
|
|
|
<el-form-item label="人员" prop="userId">
|
|
|
|
|
<!-- 显示当前登录人名字 -->
|
|
|
|
|
<el-input :model-value="userStore.nickname" disabled />
|
|
|
|
|
<el-input :model-value="getUserName(form.userId)" disabled />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
|
|
|
|
|
@ -145,11 +145,19 @@
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
|
|
|
|
|
<el-table-column label="工时(H)" prop="hours" width="150" align="center">
|
|
|
|
|
<el-table-column label="工时" prop="hours" width="150" align="center">
|
|
|
|
|
<template #default="scope">
|
|
|
|
|
<el-input-number v-model="scope.row.hours" :min="0" :precision="1" :step="0.5" style="width: 100%" :disabled="isReadOnly" />
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
|
|
|
|
|
<el-table-column label="审批人" prop="approverId" width="150" align="center">
|
|
|
|
|
<template #default="scope">
|
|
|
|
|
<el-select v-model="scope.row.approverId" placeholder="请选择审批人" filterable clearable :disabled="isReadOnly">
|
|
|
|
|
<el-option v-for="user in userList" :key="user.userId" :label="user.nickName" :value="user.userId" />
|
|
|
|
|
</el-select>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
</el-table>
|
|
|
|
|
</el-card>
|
|
|
|
|
|
|
|
|
|
@ -211,11 +219,19 @@
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
|
|
|
|
|
<el-table-column label="工时(H)" prop="hours" width="150" align="center">
|
|
|
|
|
<el-table-column label="工时" prop="hours" width="150" align="center">
|
|
|
|
|
<template #default="scope">
|
|
|
|
|
<el-input-number v-model="scope.row.hours" :min="0" :precision="1" :step="0.5" style="width: 100%" :disabled="isReadOnly" />
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
|
|
|
|
|
<el-table-column label="审批人" prop="approverId" width="150" align="center">
|
|
|
|
|
<template #default="scope">
|
|
|
|
|
<el-select v-model="scope.row.approverId" placeholder="请选择审批人" filterable clearable :disabled="isReadOnly">
|
|
|
|
|
<el-option v-for="user in userList" :key="user.userId" :label="user.nickName" :value="user.userId" />
|
|
|
|
|
</el-select>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
</el-table>
|
|
|
|
|
</el-card>
|
|
|
|
|
|
|
|
|
|
@ -278,7 +294,7 @@ const data = reactive({
|
|
|
|
|
totalHours: 0,
|
|
|
|
|
deptHours: 0,
|
|
|
|
|
projectHours: 0,
|
|
|
|
|
timesheetStatus: '0',
|
|
|
|
|
// timesheetStatus: '0',
|
|
|
|
|
flowStatus: 'draft',
|
|
|
|
|
remark: undefined,
|
|
|
|
|
// 子表
|
|
|
|
|
@ -499,7 +515,7 @@ const getSummary = (param: any) => {
|
|
|
|
|
if (column.property === 'hours') {
|
|
|
|
|
const values = data.map((item: any) => Number(item[column.property]));
|
|
|
|
|
const total = values.reduce((prev: any, curr: any) => (!Number.isNaN(curr) ? prev + curr : prev), 0);
|
|
|
|
|
sums[index] = total.toFixed(1) + ' H';
|
|
|
|
|
sums[index] = total.toFixed(1);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
return sums;
|
|
|
|
|
@ -516,12 +532,40 @@ const submitForm = (status: string) => {
|
|
|
|
|
if (status !== 'draft') {
|
|
|
|
|
// 提交审批
|
|
|
|
|
submitData.flowCode = FlowCodeEnum.TIMESHEET_KEY;
|
|
|
|
|
|
|
|
|
|
// 提取部门工时审批人 (取 approverId)
|
|
|
|
|
const deptApproverSet = new Set();
|
|
|
|
|
submitData.timesheetDeptList.forEach((item: any) => {
|
|
|
|
|
if (item.approverId) deptApproverSet.add(item.approverId);
|
|
|
|
|
});
|
|
|
|
|
const deptApprovers = Array.from(deptApproverSet);
|
|
|
|
|
|
|
|
|
|
// 提取项目工时审批人 (取 approverId)
|
|
|
|
|
const projectApproverSet = new Set();
|
|
|
|
|
submitData.timesheetProjectList.forEach((item: any) => {
|
|
|
|
|
if (item.approverId) projectApproverSet.add(item.approverId);
|
|
|
|
|
});
|
|
|
|
|
const projectApprovers = Array.from(projectApproverSet);
|
|
|
|
|
|
|
|
|
|
// 必须选择审批人
|
|
|
|
|
if (deptApprovers.length === 0 && projectApprovers.length === 0) {
|
|
|
|
|
proxy.$modal.msgError('请至少填写一项工时并指定审批人');
|
|
|
|
|
buttonLoading.value = false;
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 放入流程变量
|
|
|
|
|
submitData.variables = {
|
|
|
|
|
startUserId: userStore.userId,
|
|
|
|
|
totalHours: submitData.totalHours
|
|
|
|
|
totalHours: submitData.totalHours,
|
|
|
|
|
deptApprovers: deptApprovers, // 对应后端 variables.put("deptApprovers", ...)
|
|
|
|
|
projectApprovers: projectApprovers, // 对应后端 variables.put("projectApprovers", ...)
|
|
|
|
|
hasDeptWork: deptApprovers.length > 0, // 前端也可以传这个标记,双重保险
|
|
|
|
|
hasProjectWork: projectApprovers.length > 0 // 前端也可以传这个标记
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
submitData.bizExt = {
|
|
|
|
|
businessTitle: `工时填报:${userStore.nickname} (${submitData.startTime})`,
|
|
|
|
|
businessTitle: `工时填报:${userStore.nickname}`,
|
|
|
|
|
businessCode: submitData.timesheetCode
|
|
|
|
|
};
|
|
|
|
|
submitData.timesheetStatus = '2'; // 已提交
|
|
|
|
|
|