feat(erp/timesheet): 新增工时填报管理模块审批功能

dev
Yangk 5 days ago
parent 38c215671a
commit 1ae7e14ecf

@ -67,13 +67,13 @@ export const delTimesheetInfo = (timesheetId: string | number | Array<string | n
* @param query
* @returns {*}
*/
export function getErpTimesheetInfoList (query) {
return request({
url: '/oa/erp/timesheetInfo/getErpTimesheetInfoList',
method: 'get',
params: query
});
};
export function getErpTimesheetInfoList(query) {
return request({
url: '/oa/erp/timesheetInfo/getErpTimesheetInfoList',
method: 'get',
params: query
});
}
/**
*
@ -81,7 +81,7 @@ export function getErpTimesheetInfoList (query) {
*/
export const submitTimesheetAndFlowStart = (data: any) => {
return request({
url: '/oa/erp/timesheet/submitAndFlowStart',
url: '/oa/erp/timesheetInfo/submitAndFlowStart',
method: 'post',
data: data
});

@ -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'; //

Loading…
Cancel
Save