feat(market): MaterialUsageTab 支持 mineOnly 模式

- 添加 mineOnly prop,默认 false
- mineOnly 时使用 fetchMyMaterialUsageList 接口
- mineOnly 时变动类型下拉不显示"入库"
- mineOnly 时表格显示"使用状态"列
- mineOnly 时隐藏"领用人"列

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
zlwuandCursor committed 2026-06-15 14:06:07 +08:00
1 parent 768294450b
commit 5f0d7c70f9
1 file changed
+43 -4
@@ -34,7 +34,7 @@
</el-form-item>
<el-form-item label="变动类型">
<el-select v-model="searchForm.changeType" placeholder="全部" clearable>
<el-option label="入库" value="in" />
<el-option v-if="!mineOnly" label="入库" value="in" />
<el-option label="出库" value="out" />
<el-option label="废弃" value="discard" />
</el-select>
@@ -53,7 +53,11 @@
</el-form-item>
</div>
<div class="filter-actions-row">
<span class="filter-hint">按物料、入库编号、批号、变动类型和时间范围查询变动记录。</span>
<span class="filter-hint">{{
mineOnly
? '查看本人物料领用记录,可按物料、批号、类型与时间范围筛选。'
: '按物料、入库编号、批号、变动类型和时间范围查询变动记录。'
}}</span>
<div class="filter-actions-end">
<el-button class="btn-ghost" @click="handleReset">
<el-icon><RefreshLeft /></el-icon>重置
@@ -164,6 +168,25 @@
align="center"
header-align="center"
/>
<el-table-column
v-if="mineOnly"
label="使用状态"
min-width="100"
align="center"
header-align="center"
>
<template #default="{ row }">
<template v-if="isManualOutRow(row)">
<el-tag v-if="row.requisitionStatus === 'closed'" type="success" size="small">
已使用完
</el-tag>
<el-tag v-else type="info" size="small">
使用中
</el-tag>
</template>
<span v-else>—</span>
</template>
</el-table-column>
<el-table-column
prop="sourceType"
label="来源类型"
@@ -178,6 +201,7 @@
</template>
</el-table-column>
<el-table-column
v-if="!mineOnly"
label="领用人"
min-width="100"
align="center"
@@ -284,7 +308,11 @@
import { ref, reactive, computed, onMounted } from 'vue'
import { ElMessage, ElMessageBox } from 'element-plus'
import { Search, RefreshLeft, View, Document, CircleCheck } from '@element-plus/icons-vue'
import { fetchMaterialUsageList, fetchMarkMaterialUsageFullyUsed } from '@/api/material-usage'
import {
fetchMaterialUsageList,
fetchMyMaterialUsageList,
fetchMarkMaterialUsageFullyUsed
} from '@/api/material-usage'
import type { MaterialUsage } from '@/api/material-usage'
import { fetchMaterialList } from '@/api/material'
import type { MaterialOption } from '@/api/material'
@@ -293,6 +321,15 @@
defineOptions({ name: 'MaterialUsageTab' })
const props = withDefaults(
defineProps<{
mineOnly?: boolean
}>(),
{
mineOnly: false
}
)
const route = useRoute()
const searchForm = reactive<{
@@ -463,7 +500,9 @@
params.startTime = dateRange.value[0]
params.endTime = dateRange.value[1]
}
const res = await fetchMaterialUsageList(params)
const res = props.mineOnly
? await fetchMyMaterialUsageList(params)
: await fetchMaterialUsageList(params)
tableData.value = res.list || []
pagination.total = res.total ?? 0
} finally {