fix(erp/timesheet): 修复工时导出数据缺失及优化列表显示

dev
Yangk 3 days ago
parent c068395757
commit 98debb29e2

@ -151,7 +151,8 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="审批人" prop="approverId" width="150" align="center"> <el-table-column prop="approverId" width="150" align="center">
<template #header> <span style="color: #f56c6c; margin-right: 4px">*</span>审批人 </template>
<template #default="scope"> <template #default="scope">
<el-select v-model="scope.row.approverId" placeholder="请选择审批人" filterable clearable :disabled="isReadOnly"> <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-option v-for="user in userList" :key="user.userId" :label="user.nickName" :value="user.userId" />
@ -225,7 +226,8 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="审批人" prop="approverId" width="150" align="center"> <el-table-column prop="approverId" width="150" align="center">
<template #header> <span style="color: #f56c6c; margin-right: 4px">*</span>审批人 </template>
<template #default="scope"> <template #default="scope">
<el-select v-model="scope.row.approverId" placeholder="请选择审批人" filterable clearable :disabled="isReadOnly"> <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-option v-for="user in userList" :key="user.userId" :label="user.nickName" :value="user.userId" />
@ -530,6 +532,33 @@ const submitForm = (status: string) => {
const submitData: any = { ...form.value }; const submitData: any = { ...form.value };
if (status !== 'draft') { if (status !== 'draft') {
//
if (submitData.timesheetDeptList && submitData.timesheetDeptList.length > 0) {
for (let i = 0; i < submitData.timesheetDeptList.length; i++) {
const row = submitData.timesheetDeptList[i];
//
if (!row.approverId) {
proxy.$modal.msgError(`部门工作:第 ${i + 1} 行未选择审批人`);
buttonLoading.value = false;
return; //
}
}
}
if (submitData.timesheetProjectList && submitData.timesheetProjectList.length > 0) {
for (let i = 0; i < submitData.timesheetProjectList.length; i++) {
const row = submitData.timesheetProjectList[i];
if (!row.approverId) {
proxy.$modal.msgError(`项目工作:第 ${i + 1} 行未选择审批人`);
buttonLoading.value = false;
return; //
}
}
}
if (submitData.timesheetDeptList.length === 0 && submitData.timesheetProjectList.length === 0) {
proxy.$modal.msgError('请至少填写一项部门工时或项目工时');
buttonLoading.value = false;
return;
}
// //
submitData.flowCode = FlowCodeEnum.TIMESHEET_KEY; submitData.flowCode = FlowCodeEnum.TIMESHEET_KEY;

@ -53,22 +53,23 @@
<el-table v-loading="loading" border :data="timesheetInfoList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" border :data="timesheetInfoList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center" />
<el-table-column label="工时填报ID" align="center" prop="timesheetId" v-if="columns[0].visible" /> <el-table-column label="工时填报ID" align="center" prop="timesheetId" v-if="columns[0].visible" />
<el-table-column label="人员" align="center" prop="nickName" v-if="columns[11].visible" />
<el-table-column label="工时填报编号" align="center" prop="timesheetCode" v-if="columns[2].visible" /> <el-table-column label="工时填报编号" align="center" prop="timesheetCode" v-if="columns[2].visible" />
<el-table-column label="人员ID" align="center" prop="userId" v-if="columns[3].visible" /> <el-table-column label="人员ID" align="center" prop="userId" v-if="columns[3].visible" />
<el-table-column label="部门ID" align="center" prop="deptId" v-if="columns[4].visible" /> <el-table-column label="部门ID" align="center" prop="deptId" v-if="columns[4].visible" />
<el-table-column label="起始时间" align="center" prop="startTime" width="180" v-if="columns[5].visible"> <el-table-column label="起始时间" align="center" prop="startTime" width="100" v-if="columns[5].visible">
<template #default="scope"> <template #default="scope">
<span>{{ parseTime(scope.row.startTime, '{y}-{m}-{d}') }}</span> <span>{{ parseTime(scope.row.startTime, '{y}-{m}-{d}') }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="结束时间" align="center" prop="endTime" width="180" v-if="columns[6].visible"> <el-table-column label="结束时间" align="center" prop="endTime" width="100" v-if="columns[6].visible">
<template #default="scope"> <template #default="scope">
<span>{{ parseTime(scope.row.endTime, '{y}-{m}-{d}') }}</span> <span>{{ parseTime(scope.row.endTime, '{y}-{m}-{d}') }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="总工时" align="center" prop="totalHours" v-if="columns[7].visible" /> <el-table-column label="总工时" align="center" prop="totalHours" width="80" v-if="columns[7].visible" />
<el-table-column label="部门工时" align="center" prop="deptHours" v-if="columns[8].visible" /> <el-table-column label="部门工时" align="center" prop="deptHours" width="80" v-if="columns[8].visible" />
<el-table-column label="项目工时" align="center" prop="projectHours" v-if="columns[9].visible" /> <el-table-column label="项目工时" align="center" prop="projectHours" width="80" v-if="columns[9].visible" />
<el-table-column label="工时填报状态" align="center" prop="timesheetStatus" v-if="columns[10].visible"> <el-table-column label="工时填报状态" align="center" prop="timesheetStatus" v-if="columns[10].visible">
<template #default="scope"> <template #default="scope">
<dict-tag :options="timesheet_status" :value="scope.row.timesheetStatus" /> <dict-tag :options="timesheet_status" :value="scope.row.timesheetStatus" />
@ -82,11 +83,11 @@
<el-table-column label="备注" align="center" prop="remark" v-if="columns[12].visible" /> <el-table-column label="备注" align="center" prop="remark" v-if="columns[12].visible" />
<el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width"> <el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width">
<template #default="scope"> <template #default="scope">
<el-tooltip content="修改" placement="top"> <el-tooltip content="修改" placement="top" v-if="scope.row.flowStatus === 'draft' || scope.row.flowStatus === 'back'">
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['oa/erp:timesheetInfo:edit']"></el-button> <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['oa/erp:timesheetInfo:edit']"></el-button>
</el-tooltip> </el-tooltip>
<el-tooltip content="删除" placement="top"> <el-tooltip content="查看详情" placement="top" v-if="scope.row.flowStatus !== 'draft'">
<el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['oa/erp:timesheetInfo:remove']"></el-button> <el-button link type="info" icon="DocumentChecked" @click="handleView(scope.row)"></el-button>
</el-tooltip> </el-tooltip>
</template> </template>
</el-table-column> </el-table-column>
@ -94,56 +95,6 @@
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" /> <pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" />
</el-card> </el-card>
<!-- 添加或修改工时填报对话框 -->
<el-dialog :title="dialog.title" v-model="dialog.visible" width="500px" append-to-body>
<el-form ref="timesheetInfoFormRef" :model="form" :rules="rules" label-width="120px">
<el-form-item label="工时填报编号" prop="timesheetCode">
<el-input v-model="form.timesheetCode" placeholder="请输入工时填报编号" />
</el-form-item>
<el-form-item label="人员ID" prop="userId">
<el-input v-model="form.userId" placeholder="请输入人员ID" />
</el-form-item>
<el-form-item label="部门ID" prop="deptId">
<el-input v-model="form.deptId" placeholder="请输入部门ID" />
</el-form-item>
<el-form-item label="起始时间" prop="startTime">
<el-date-picker clearable v-model="form.startTime" type="datetime" value-format="YYYY-MM-DD HH:mm:ss" placeholder="请选择起始时间">
</el-date-picker>
</el-form-item>
<el-form-item label="结束时间" prop="endTime">
<el-date-picker clearable v-model="form.endTime" type="datetime" value-format="YYYY-MM-DD HH:mm:ss" placeholder="请选择结束时间">
</el-date-picker>
</el-form-item>
<el-form-item label="总工时" prop="totalHours">
<el-input v-model="form.totalHours" placeholder="请输入总工时" />
</el-form-item>
<el-form-item label="部门工时" prop="deptHours">
<el-input v-model="form.deptHours" placeholder="请输入部门工时" />
</el-form-item>
<el-form-item label="项目工时" prop="projectHours">
<el-input v-model="form.projectHours" placeholder="请输入项目工时" />
</el-form-item>
<el-form-item label="工时填报状态" prop="timesheetStatus">
<el-radio-group v-model="form.timesheetStatus">
<el-radio v-for="dict in timesheet_status" :key="dict.value" :value="dict.value">{{ dict.label }}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="流程状态" prop="flowStatus">
<el-radio-group v-model="form.flowStatus">
<el-radio v-for="dict in flow_status" :key="dict.value" :value="dict.value">{{ dict.label }}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button :loading="buttonLoading" type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</template>
</el-dialog>
</div> </div>
</template> </template>
@ -193,7 +144,8 @@ const columns = ref<FieldOption[]>([
{ key: 15, label: `创建者`, visible: true }, { key: 15, label: `创建者`, visible: true },
{ key: 16, label: `创建时间`, visible: true }, { key: 16, label: `创建时间`, visible: true },
{ key: 17, label: `更新者`, visible: true }, { key: 17, label: `更新者`, visible: true },
{ key: 18, label: `更新时间`, visible: true } { key: 18, label: `更新时间`, visible: true },
{ key: 99, label: `人员`, visible: true }
]); ]);
const initFormData: TimesheetInfoForm = { const initFormData: TimesheetInfoForm = {

Loading…
Cancel
Save