feat(my-requests): 我的申请单独立模块(采购管理之后)

路由位置
--------
放在「采购管理」之后,作为独立一级模块:

    采购管理
    我的申请单      ← 新增(icon: Tickets)
    借库管理

★ 独立模块而非挂在某个业务页下:申请人可能提交出库/借库/报废三类单据,
  放在任一业务模块下都会让其它模块的人找不到。

页面功能
--------
  · 类型筛选:全部 / 出库 / 借库 / 报废
  · 状态筛选:全部 / 待审批 / 已通过 / 已驳回 / 已完成 / 已撤回
  · 展开行显示物料明细(数量字段已由后端归一化)
  · 撤回按钮仅对 status 0/1 可见(已预占但未执行)

撤回不硬编码 URL —— 使用后端回传的 withdraw_endpoint 分发:

    const res = await request({ url: row.withdraw_endpoint, method: 'post' })

这样将来模块端点调整(如借库从 close 换成正式 withdraw),前端无需改动。

权限说明
--------
菜单不做权限过滤(Sidebar 只过滤 meta.hidden),所有角色都会看到本页。
这正是预期 —— 申请人本就不应需要任何权限码。数据由后端强制按
applicant_id 过滤,看不到他人单据。

顺带清理
--------
移除先前加在 Selection.vue 的重复实现(约 110 行模板/脚本/样式),
改为一个跳转链接「查看我的申请单 >」;并移除随之失效的 3 个导入
(onMounted / Refresh / 两个 API 函数)。

验证:新页面 SFC 编译零告警;Selection.vue 清理后编译通过。
This commit is contained in:
yueli
2026-09-10 15:37:11 +08:00
parent b67d577616
commit 20d49c0b0d
4 changed files with 307 additions and 1 deletions

View File

@ -115,6 +115,11 @@
共 <span style="color: red; font-weight: bold;">{{ selectedItems.length }}</span> 种物品,
合计出库 <span style="color: red; font-weight: bold;">{{ totalExportCount }}</span> 件
</div>
<div style="margin-top: 10px; text-align: right;">
<el-button link type="primary" @click="$router.push('/my-requests')">
查看我的申请单 &gt;
</el-button>
</div>
</el-card>
<el-dialog v-model="manualDialogVisible" title="选择库存物品" width="85%" top="5vh" destroy-on-close :close-on-click-modal="false">
@ -1345,10 +1350,10 @@ const confirmExport = () => {
exportLoading.value = false;
}
}
</script>
<style scoped>
/* ================= 屏幕显示样式 ================= */
.card-header { display: flex; justify-content: space-between; align-items: center; }
.header-left .title { font-size: 18px; font-weight: bold; margin-right: 10px; }
.header-left .subtitle { font-size: 12px; color: #909399; }