From eb82d3d0ce97d7e9b5bdd7c24935cf27ac529308 Mon Sep 17 00:00:00 2001
From: 张含笑 <zhx18749296735@163.com>
Date: Tue, 20 Jan 2026 14:04:15 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
applications/task-work-order/src/views/orderView/orderDataManage/supplyAdd/ApplyViewDialog.vue | 132 ++++++++++++++++++++++++-------------------
1 files changed, 74 insertions(+), 58 deletions(-)
diff --git a/applications/task-work-order/src/views/orderView/orderDataManage/supplyAdd/ApplyViewDialog.vue b/applications/task-work-order/src/views/orderView/orderDataManage/supplyAdd/ApplyViewDialog.vue
index 3d69c8e..fa3078e 100644
--- a/applications/task-work-order/src/views/orderView/orderDataManage/supplyAdd/ApplyViewDialog.vue
+++ b/applications/task-work-order/src/views/orderView/orderDataManage/supplyAdd/ApplyViewDialog.vue
@@ -1,19 +1,19 @@
<template>
<el-dialog class="gd-dialog" v-model="visible" :title="'查看申请'" @closed="visible = false" destroy-on-close>
<div class="detail-container">
- <!-- 左侧步骤条 -->
+ <!-- 左侧审批记录 -->
<div class="detail-left">
- <el-steps :active="activeStep" direction="vertical" align-center>
- <el-step v-for="(step, index) in steps" :key="index" :title="step.title">
- <template #description>
- <div class="step-person">{{ step.person }}</div>
- <div class="step-time">{{ step.time }}</div>
- </template>
- </el-step>
- </el-steps>
+ <AuditRecord :demand-id="demandId" />
</div>
<!-- 右侧表单数据 -->
<div class="detail-right">
+ <!-- 拒绝申请-->
+ <div class="reject-reason-container" v-if="detailDemandStatus === '3'">
+ <div class="label">拒绝原因 </div>
+ <div class="reject-reason">
+ 这是拒绝原因这是拒绝原因这是拒绝原因这是拒绝原因这是拒绝原因这是拒绝原因这是拒绝原因这是拒绝原因这是拒绝原因这是拒绝原因这是拒绝原因这是拒绝原因这是拒绝原因这是拒绝原因这是拒绝原因这是拒绝原因这是拒绝原因这是拒绝原因这是拒绝原因这是拒绝原因这是拒绝原因这是拒绝原因
+ </div>
+ </div>
<div>
<div class="label">需求详情</div>
<div class="requirementsDetailsBox">
@@ -81,8 +81,9 @@
</div>
</div>
</div>
- <div>
- <div class="label">数据上传</div>
+<!-- 申请中-->
+ <div v-if="detailDemandStatus === '1'">
+ <div class="label">数据上传 </div>
<div class="upload-container">
<el-upload
ref="uploadRef"
@@ -117,6 +118,18 @@
</div>
</div>
</div>
+ <div v-if="detailDemandStatus === '2'">
+ <div class="label">数据详情 </div>
+ <el-table :data="tableData" border style="width: 100%">
+ <el-table-column prop="name" label="文件名称" />
+ <el-table-column prop="fileSize" label="文件大小" />
+ <el-table-column fixed="right" label="操作" min-width="100">
+ <template #default="scope">
+ <el-button link type="text" @click="downloadFileFromTable(scope.row)">下载</el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ </div>
</div>
</div>
<template #footer>
@@ -134,19 +147,22 @@
</template>
<script setup>
-import { ref, inject } from 'vue'
import { getDictLabel } from '@ztzf/utils'
import {
gdSupplyDemandDetailApi,
putFileAttachApi,
gdSupplyDemandAuditPassApi,
gdSupplyDemandAuditRejectApi,
+ gdSupplyDemandAuditAttachmentListApi
} from '@/views/orderView/orderDataManage/supplyAdd/supplyAddApi'
import { ElMessage } from 'element-plus'
-import reasonForRejectionDialog from './reasonForRejectionDialog.vue'
+import reasonForRejectionDialog from '@/views/orderView/orderDataManage/supplyAdd/reasonForRejectionDialog.vue'
+import AuditRecord from '@/views/orderView/orderDataManage/supplyAdd/auditRecord.vue' // 导入新组件
+
const emit = defineEmits(['success'])
const dictObj = inject('dictObj')
const deptTree = inject('deptTree')
+const detailDemandStatus = inject('detailDemandStatus')
const demandId = ref('')
const visible = defineModel() // 弹框显隐
const formData = ref({}) // 表单数据
@@ -158,14 +174,7 @@
const responseData = ref([])
// 拒绝申请弹框控制
const rejectionDialogVisible = ref(false) // 拒绝申请弹框显隐
-// 步骤条数据
-const steps = ref([
- { title: '需求申请', person: '张三', time: '2025-03-31 12:23:30' },
- { title: '审核通过', person: '', time: '' },
-])
-// 当前激活步骤
-const activeStep = ref(0)
-
+const tableData = ref([]) // 附件表格数据
// 文件选择变化
const handleFileChange = (file, fileList) => {
if (fileList.length > 0) {
@@ -277,6 +286,21 @@
}
}
+// 从表格下载文件
+const downloadFileFromTable = file => {
+ if (file.fileUrl) {
+ // 创建一个隐藏的a标签来触发下载
+ const a = document.createElement('a')
+ a.href = file.fileUrl
+ a.download = file.name || 'attachment'
+ document.body.appendChild(a)
+ a.click()
+ document.body.removeChild(a)
+ } else {
+ ElMessage.warning('文件链接无效')
+ }
+}
+
// 根据部门ID获取部门名称
function getDeptNameById(deptId, deptList) {
// 处理类型转换,确保比较的是相同类型
@@ -308,7 +332,6 @@
if (row?.id) {
await loadDetail(row.id)
demandId.value = row.id
- console.log('row.id', demandId.value)
}
visible.value = true
}
@@ -322,6 +345,29 @@
data.responsibleDeptName = getDeptNameById(data.responsibleDeptId, deptTree.value)
}
formData.value = data
+
+ // 加载附件数据
+ await loadAttachments(id)
+}
+
+// 加载附件数据
+async function loadAttachments(demandId) {
+ try {
+ const res = await gdSupplyDemandAuditAttachmentListApi({ demandId:demandId })
+ const attachments = res?.data?.data ?? []
+
+ // 格式化附件数据以匹配表格结构
+ tableData.value = attachments.map(attachment => ({
+ name: attachment.attachId ? `附件ID: ${attachment.attachId}` : '未知附件',
+ fileSize: attachment.fileSize ? `${attachment.fileSize}M` : '未知大小',
+ fileUrl: attachment.fileUrl,
+ id: attachment.id
+ }))
+ } catch (error) {
+ console.error('加载附件数据失败:', error)
+ ElMessage.error('加载附件数据失败,请重试')
+ tableData.value = []
+ }
}
// 拒绝申请
@@ -336,8 +382,6 @@
// 处理拒绝申请确认
const handleRejectionConfirm = reason => {
const id = [responseData.value.attachId]
- console.log('demandId.value', demandId.value)
-
gdSupplyDemandAuditRejectApi({ attachIds: id, auditOpinion: reason, demandId: demandId.value })
.then(() => {
ElMessage.success('拒绝申请成功')
@@ -384,6 +428,12 @@
/* 右侧表单 */
.detail-right {
width: 75%;
+ .reject-reason {
+ margin-bottom: 20px;
+ background: #F2F3F5;
+ border-radius: 2px 2px 2px 2px;
+ padding: 15px;
+ }
.requirementsDetailsBox {
background: #F2F3F5;
border-radius: 2px 2px 2px 2px;
@@ -426,40 +476,6 @@
flex: 1;
text-align: left;
}
-}
-
-/* 步骤条样式 */
-:deep(.el-steps) {
- align-items: flex-start;
-}
-
-:deep(.el-step) {
- margin-bottom: 20px;
-}
-
-:deep(.el-step__title) {
- font-size: 14px;
- font-weight: 500;
- margin-bottom: 8px;
-}
-
-/* 步骤描述 */
-.step-person {
- font-size: 13px;
- color: #333;
- margin-bottom: 4px;
-}
-
-.step-time {
- font-size: 12px;
- color: #909399;
-}
-
-/* 表单样式 */
-.label {
- font-weight: 500;
- margin-bottom: 8px;
- color: #333;
}
/* 上传容器样式 */
--
Gitblit v1.9.3