已处理

This commit is contained in:
18631081161 2026-01-17 20:29:34 +08:00
parent 355087e0f0
commit 070f66b471
3 changed files with 120 additions and 2 deletions

View File

@ -177,6 +177,57 @@ public class ConsumptionChangeRequestsController : BaseApiController
return Ok(requests);
}
/// <summary>
/// 获取已处理的申请列表(上级单位已处理的下级申请)
/// </summary>
[HttpGet("processed")]
public async Task<IActionResult> GetProcessedRequests()
{
var unitId = GetCurrentUnitId();
if (unitId == null)
return Unauthorized();
// 获取下级单位的ID列表
var subordinateIds = await GetSubordinateUnitIds(unitId.Value);
var requests = await _context.ConsumptionReportChangeRequests
.Include(r => r.ConsumptionReport)
.ThenInclude(cr => cr.AllocationDistribution)
.ThenInclude(d => d.Allocation)
.Include(r => r.RequestedByUnit)
.Include(r => r.RequestedByUser)
.Include(r => r.ProcessedByUnit)
.Where(r => r.Status != ChangeRequestStatus.Pending
&& subordinateIds.Contains(r.RequestedByUnitId))
.OrderByDescending(r => r.ProcessedAt)
.Select(r => new
{
r.Id,
r.ConsumptionReportId,
RequestType = r.RequestType.ToString(),
r.Reason,
Status = r.Status.ToString(),
r.RequestedAt,
RequestedByUnitName = r.RequestedByUnit.Name,
RequestedByUserName = r.RequestedByUser.DisplayName,
r.ProcessedAt,
ProcessedByUnitName = r.ProcessedByUnit != null ? r.ProcessedByUnit.Name : null,
r.ProcessComments,
ConsumptionReport = new
{
r.ConsumptionReport.Id,
r.ConsumptionReport.ReportedAmount,
r.ConsumptionReport.ReportedAt,
r.ConsumptionReport.Remarks,
MaterialName = r.ConsumptionReport.AllocationDistribution.Allocation.MaterialName,
Unit = r.ConsumptionReport.AllocationDistribution.Allocation.Unit
}
})
.ToListAsync();
return Ok(requests);
}
/// <summary>
/// 处理申请(同意或拒绝)
/// </summary>

View File

@ -118,6 +118,12 @@ export const changeRequestsApi = {
return response.data
},
// 获取已处理的申请(上级已处理的下级申请)
async getProcessed(): Promise<ChangeRequest[]> {
const response = await apiClient.get<ChangeRequest[]>('/ConsumptionChangeRequests/processed')
return response.data
},
// 获取本单位的申请
async getMy(): Promise<ChangeRequest[]> {
const response = await apiClient.get<ChangeRequest[]>('/ConsumptionChangeRequests/my')

View File

@ -9,6 +9,7 @@
</div>
<el-radio-group v-model="viewMode" size="small">
<el-radio-button value="pending">待处理</el-radio-button>
<el-radio-button value="processed">已处理</el-radio-button>
<el-radio-button value="my">我的申请</el-radio-button>
</el-radio-group>
</div>
@ -68,6 +69,57 @@
</el-table>
</div>
<!-- 已处理申请列表上级已处理的下级申请 -->
<div v-else-if="viewMode === 'processed'">
<el-empty v-if="processedRequests.length === 0" description="暂无已处理的申请" />
<el-table v-else :data="processedRequests" stripe>
<el-table-column label="申请时间" width="170" align="center">
<template #default="{ row }">
{{ formatDate(row.requestedAt) }}
</template>
</el-table-column>
<el-table-column label="申请单位" width="120" align="center">
<template #default="{ row }">
{{ row.requestedByUnitName }}
</template>
</el-table-column>
<el-table-column label="申请类型" width="100" align="center">
<template #default="{ row }">
<el-tag :type="row.requestType === 'Delete' ? 'danger' : 'warning'" size="small">
{{ row.requestType === 'Delete' ? '删除' : '修改' }}
</el-tag>
</template>
</el-table-column>
<el-table-column label="物资名称" width="120">
<template #default="{ row }">
{{ row.consumptionReport?.materialName || '-' }}
</template>
</el-table-column>
<el-table-column label="申请原因" min-width="120">
<template #default="{ row }">
{{ row.reason }}
</template>
</el-table-column>
<el-table-column label="处理结果" width="100" align="center">
<template #default="{ row }">
<el-tag :type="getStatusTagType(row.status)" size="small">
{{ getStatusText(row.status) }}
</el-tag>
</template>
</el-table-column>
<el-table-column label="处理时间" width="170" align="center">
<template #default="{ row }">
{{ row.processedAt ? formatDate(row.processedAt) : '-' }}
</template>
</el-table-column>
<el-table-column label="处理意见" min-width="120">
<template #default="{ row }">
{{ row.processComments || '-' }}
</template>
</el-table-column>
</el-table>
</div>
<!-- 我的申请列表 -->
<div v-else>
<el-empty v-if="myRequests.length === 0" description="暂无申请记录" />
@ -188,8 +240,9 @@ import { changeRequestsApi, type ChangeRequest } from '@/api'
const loading = ref(false)
const processing = ref(false)
const viewMode = ref<'pending' | 'my'>('pending')
const viewMode = ref<'pending' | 'processed' | 'my'>('pending')
const pendingRequests = ref<ChangeRequest[]>([])
const processedRequests = ref<ChangeRequest[]>([])
const myRequests = ref<ChangeRequest[]>([])
const rejectDialogVisible = ref(false)
@ -228,6 +281,14 @@ async function loadPendingRequests() {
}
}
async function loadProcessedRequests() {
try {
processedRequests.value = await changeRequestsApi.getProcessed()
} catch (error: any) {
console.error('加载已处理申请失败', error)
}
}
async function loadMyRequests() {
try {
myRequests.value = await changeRequestsApi.getMy()
@ -239,7 +300,7 @@ async function loadMyRequests() {
async function loadData() {
loading.value = true
try {
await Promise.all([loadPendingRequests(), loadMyRequests()])
await Promise.all([loadPendingRequests(), loadProcessedRequests(), loadMyRequests()])
} finally {
loading.value = false
}