已处理
This commit is contained in:
parent
355087e0f0
commit
070f66b471
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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')
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user