From a67c63741fe925b05db2505e3f5bd297b6a5032d Mon Sep 17 00:00:00 2001
From: 张含笑 <zhx18749296735@163.com>
Date: Tue, 20 Jan 2026 10:30:16 +0800
Subject: [PATCH] feat:刷新数据
---
applications/task-work-order/src/views/orderView/orderDataManage/supplyAdd/ApplyViewDialog.vue | 496 ++++++++++++++++++++++++++-----------------------------
1 files changed, 234 insertions(+), 262 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 ec99aae..3d69c8e 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,151 +1,127 @@
<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>
- </div>
- <!-- 右侧表单数据 -->
- <div class="detail-right">
- <div>
- <div class="label">需求详情</div>
- <div class="requirementsDetailsBox">
- <div class="detail-table">
- <div class="detail-row">
- <div class="detail-cell">
- <span class="cell-label">需求名称</span>
- <span class="cell-value">{{ formData.demandName }}</span>
- </div>
- <div class="detail-cell">
- <span class="cell-label">需求类型</span>
- <span class="cell-value">{{ getDictLabel(formData.demandType, dictObj.requirementType) }}</span>
+ <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>
+ </div>
+ <!-- 右侧表单数据 -->
+ <div class="detail-right">
+ <div>
+ <div class="label">需求详情</div>
+ <div class="requirementsDetailsBox">
+ <div class="detail-table">
+ <div class="detail-row">
+ <div class="detail-cell">
+ <span class="cell-label">需求名称</span>
+ <span class="cell-value">{{ formData.demandName }}</span>
+ </div>
+ <div class="detail-cell">
+ <span class="cell-label">需求类型</span>
+ <span class="cell-value">{{ getDictLabel(formData.demandType, dictObj.requirementType) }}</span>
+ </div>
+ </div>
+ <div class="detail-row">
+ <div class="detail-cell">
+ <span class="cell-label">需求联系人</span>
+ <span class="cell-value">{{ formData.contactPerson }}</span>
+ </div>
+ <div class="detail-cell">
+ <span class="cell-label">需求联系人电话</span>
+ <span class="cell-value">{{ formData.contactPhone }}</span>
+ </div>
+ </div>
+ <div class="detail-row">
+ <div class="detail-cell">
+ <span class="cell-label">需求邮箱</span>
+ <span class="cell-value">{{ formData.contactEmail }}</span>
+ </div>
+ <div class="detail-cell">
+ <span class="cell-label">更新周期</span>
+ <span class="cell-value">{{ formData.updateCycle }}</span>
+ </div>
+ </div>
+ <div class="detail-row">
+ <div class="detail-cell">
+ <span class="cell-label">申请依据</span>
+ <span class="cell-value">{{ formData.applyBasis }}</span>
+ </div>
+ <div class="detail-cell">
+ <span class="cell-label">共享类型</span>
+ <span class="cell-value">{{ getDictLabel(formData.shareType, dictObj.sharedType) }}</span>
+ </div>
+ </div>
+ <div class="detail-row">
+ <div class="detail-cell">
+ <span class="cell-label">应用场景类型</span>
+ <span class="cell-value">{{ getDictLabel(formData.applicationScene, dictObj.appSceneType) }}</span>
+ </div>
+ <div class="detail-cell">
+ <span class="cell-label">责任部门</span>
+ <span class="cell-value">{{ formData.responsibleDeptName }}</span>
+ </div>
+ </div>
+ <div class="detail-row">
+ <div class="detail-cell">
+ <span class="cell-label">数据来源依据</span>
+ <span class="cell-value">{{ formData.dataSource }}</span>
+ </div>
+ <div class="detail-cell">
+ <span class="cell-label">需求信息项</span>
+ <span class="cell-value">{{ formData.demandInfo }}</span>
+ </div>
+ </div>
</div>
</div>
- <div class="detail-row">
- <div class="detail-cell">
- <span class="cell-label">需求联系人</span>
- <span class="cell-value">{{ formData.contactPerson }}</span>
- </div>
- <div class="detail-cell">
- <span class="cell-label">需求联系人电话</span>
- <span class="cell-value">{{ formData.contactPhone }}</span>
- </div>
- </div>
- <div class="detail-row">
- <div class="detail-cell">
- <span class="cell-label">需求邮箱</span>
- <span class="cell-value">{{ formData.contactEmail }}</span>
- </div>
- <div class="detail-cell">
- <span class="cell-label">更新周期</span>
- <span class="cell-value">{{ formData.updateCycle }}</span>
- </div>
- </div>
- <div class="detail-row">
- <div class="detail-cell">
- <span class="cell-label">申请依据</span>
- <span class="cell-value">{{ formData.applyBasis }}</span>
- </div>
- <div class="detail-cell">
- <span class="cell-label">共享类型</span>
- <span class="cell-value">{{ getDictLabel(formData.shareType, dictObj.sharedType) }}</span>
- </div>
- </div>
- <div class="detail-row">
- <div class="detail-cell">
- <span class="cell-label">应用场景类型</span>
- <span class="cell-value">{{ getDictLabel(formData.applicationScene, dictObj.appSceneType) }}</span>
- </div>
- <div class="detail-cell">
- <span class="cell-label">责任部门</span>
- <span class="cell-value">{{ formData.responsibleDeptName }}</span>
- </div>
- </div>
- <div class="detail-row">
- <div class="detail-cell">
- <span class="cell-label">数据来源依据</span>
- <span class="cell-value">{{ formData.dataSource }}</span>
- </div>
- <div class="detail-cell">
- <span class="cell-label">需求信息项</span>
- <span class="cell-value">{{ formData.demandInfo }}</span>
+ </div>
+ <div>
+ <div class="label">数据上传</div>
+ <div class="upload-container">
+ <el-upload
+ ref="uploadRef"
+ :auto-upload="false"
+ :limit="1"
+ :on-change="handleFileChange"
+ :on-remove="handleFileRemove"
+ :before-upload="beforeFileUpload"
+ :file-list="fileList"
+ accept=".zip,.rar,.7z,.tar,.gz"
+ class="upload-demo"
+ >
+ <template #trigger>
+ <el-button type="primary">选择文件</el-button>
+ </template>
+ <template #tip>
+ <div class="el-upload__tip">请上传压缩文件 (.zip/.rar/.7z/.tar/.gz)</div>
+ </template>
+ </el-upload>
+ <el-button type="success" :disabled="!selectedFile" @click="handleUpload" style="margin-top: 10px">
+ 上传文件
+ </el-button>
+
+ <!-- 已上传文件列表 -->
+ <div v-if="uploadedFiles.length > 0" class="uploaded-files">
+ <h4>已上传文件:</h4>
+ <div v-for="(file, index) in uploadedFiles" :key="index" class="file-item">
+ <span>{{ file.originalName }}</span>
+ <el-button type="text" @click="viewFile(file)" style="margin-left: 10px">查看</el-button>
+ <el-button type="text" @click="downloadFile(file)" style="margin-left: 5px">下载</el-button>
+ </div>
</div>
</div>
</div>
</div>
</div>
- <div>
- <div class="label">数据上传</div>
- <div class="upload-container">
- <el-upload
- ref="uploadRef"
- :auto-upload="false"
- :limit="1"
- :on-change="handleFileChange"
- :on-remove="handleFileRemove"
- :before-upload="beforeFileUpload"
- :file-list="fileList"
- accept=".zip,.rar,.7z,.tar,.gz"
- class="upload-demo"
- >
- <template #trigger>
- <el-button type="primary">选择文件</el-button>
- </template>
- <template #tip>
- <div class="el-upload__tip">
- 请上传压缩文件 (.zip/.rar/.7z/.tar/.gz)
- </div>
- </template>
- </el-upload>
- <el-button
- type="success"
- :disabled="!selectedFile"
- @click="handleUpload"
- style="margin-top: 10px;"
- >
- 上传文件
- </el-button>
-
- <!-- 已上传文件列表 -->
- <div v-if="uploadedFiles.length > 0" class="uploaded-files">
- <h4>已上传文件:</h4>
- <div v-for="(file, index) in uploadedFiles" :key="index" class="file-item">
- <span>{{ file.originalName }}</span>
- <el-button type="text" @click="viewFile(file)" style="margin-left: 10px;">查看</el-button>
- <el-button type="text" @click="downloadFile(file)" style="margin-left: 5px;">下载</el-button>
- </div>
- </div>
- </div>
- </div>
-
- </div>
-
- </div>
<template #footer>
- <el-button
- class="save-btn"
- color="#4C34FF"
-
-
- @click="rejectTheApplication"
- >
- 拒绝申请
- </el-button>
- <el-button color="#F2F3F5" @click="approvedByTheReview">审核通过</el-button>
-
+ <el-button class="save-btn" color="#4C34FF" @click="rejectTheApplication">拒绝申请</el-button>
+ <el-button color="#F2F3F5" @click="approvedByTheReview">审核通过</el-button>
</template>
</el-dialog>
@@ -160,10 +136,15 @@
<script setup>
import { ref, inject } from 'vue'
import { getDictLabel } from '@ztzf/utils'
-import { gdSupplyDemandDetailApi, putFileAttachApi,gdSupplyDemandAuditPassApi,gdSupplyDemandAuditRejectApi } from '@/views/orderView/orderDataManage/supplyAdd/supplyAddApi'
-import { ElMessage, ElMessageBox } from 'element-plus'
+import {
+ gdSupplyDemandDetailApi,
+ putFileAttachApi,
+ gdSupplyDemandAuditPassApi,
+ gdSupplyDemandAuditRejectApi,
+} from '@/views/orderView/orderDataManage/supplyAdd/supplyAddApi'
+import { ElMessage } from 'element-plus'
import reasonForRejectionDialog from './reasonForRejectionDialog.vue'
-
+const emit = defineEmits(['success'])
const dictObj = inject('dictObj')
const deptTree = inject('deptTree')
const demandId = ref('')
@@ -183,125 +164,124 @@
{ title: '审核通过', person: '', time: '' },
])
// 当前激活步骤
-const activeStep = ref(0)
+const activeStep = ref(0)
// 文件选择变化
const handleFileChange = (file, fileList) => {
- if (fileList.length > 0) {
- selectedFile.value = file.raw
- } else {
- selectedFile.value = null
- }
+ if (fileList.length > 0) {
+ selectedFile.value = file.raw
+ } else {
+ selectedFile.value = null
+ }
}
// 文件移除
const handleFileRemove = () => {
- selectedFile.value = null
+ selectedFile.value = null
}
// 上传前验证
-const beforeFileUpload = (file) => {
- const allowedExtensions = ['.zip', '.rar', '.7z', '.tar', '.gz']
- const fileExtension = '.' + file.name.split('.').pop().toLowerCase()
-
- if (!allowedExtensions.includes(fileExtension)) {
- ElMessage.error('只能上传压缩文件格式:.zip/.rar/.7z/.tar/.gz')
- return false
- }
-
- // 文件大小限制,这里限制为100MB
- const maxSize = 100 * 1024 * 1024 // 100MB
- if (file.size > maxSize) {
- ElMessage.error('文件大小不能超过100MB')
- return false
- }
-
- return true
+const beforeFileUpload = file => {
+ const allowedExtensions = ['.zip', '.rar', '.7z', '.tar', '.gz']
+ const fileExtension = '.' + file.name.split('.').pop().toLowerCase()
+
+ if (!allowedExtensions.includes(fileExtension)) {
+ ElMessage.error('只能上传压缩文件格式:.zip/.rar/.7z/.tar/.gz')
+ return false
+ }
+
+ // 文件大小限制,这里限制为100MB
+ const maxSize = 100 * 1024 * 1024 // 100MB
+ if (file.size > maxSize) {
+ ElMessage.error('文件大小不能超过100MB')
+ return false
+ }
+
+ return true
}
// 处理文件上传
const handleUpload = async () => {
- if (!selectedFile.value) {
- ElMessage.warning('请先选择文件')
- return
- }
+ if (!selectedFile.value) {
+ ElMessage.warning('请先选择文件')
+ return
+ }
- // 再次验证文件类型
- if (!beforeFileUpload(selectedFile.value)) {
- return
- }
+ // 再次验证文件类型
+ if (!beforeFileUpload(selectedFile.value)) {
+ return
+ }
- try {
- uploadLoading.value = true
-
- // 创建FormData对象
- const formData = new FormData()
- formData.append('file', selectedFile.value)
-
- // 调用上传接口
- const response = await putFileAttachApi(formData)
-
- if (response.data && response.data.success) {
- const fileData = response.data.data
- console.log('成功数据',fileData);
- responseData.value = fileData
- // 添加到已上传文件列表
- uploadedFiles.value.push({
- name: fileData.name,
- originalName: fileData.originalName,
- link: fileData.link,
- attachId: fileData.attachId
- })
-
- ElMessage.success('文件上传成功!')
-
- // 清空上传列表
- uploadRef.value.clearFiles()
- selectedFile.value = null
-
- // 这里可以将附件ID保存到表单数据中,供后续提交使用
- // formData.value.attachmentId = fileData.attachId
-
- } else {
- ElMessage.error(response.data?.msg || '文件上传失败')
- }
- } catch (error) {
- console.error('文件上传失败:', error)
- ElMessage.error('文件上传失败,请重试')
- } finally {
- uploadLoading.value = false
- }
+ try {
+ uploadLoading.value = true
+
+ // 创建FormData对象
+ const formData = new FormData()
+ formData.append('file', selectedFile.value)
+
+ // 调用上传接口
+ const response = await putFileAttachApi(formData)
+
+ if (response.data && response.data.success) {
+ const fileData = response.data.data
+ console.log('成功数据', fileData)
+ responseData.value = fileData
+ // 添加到已上传文件列表
+ uploadedFiles.value.push({
+ name: fileData.name,
+ originalName: fileData.originalName,
+ link: fileData.link,
+ attachId: fileData.attachId,
+ })
+
+ ElMessage.success('文件上传成功!')
+
+ // 清空上传列表
+ uploadRef.value.clearFiles()
+ selectedFile.value = null
+
+ // 这里可以将附件ID保存到表单数据中,供后续提交使用
+ // formData.value.attachmentId = fileData.attachId
+ } else {
+ ElMessage.error(response.data?.msg || '文件上传失败')
+ }
+ } catch (error) {
+ console.error('文件上传失败:', error)
+ ElMessage.error('文件上传失败,请重试')
+ } finally {
+ uploadLoading.value = false
+ }
}
// 查看文件
-const viewFile = (file) => {
- if (file.link) {
- window.open(file.link, '_blank')
- } else {
- ElMessage.warning('文件链接无效')
- }
+const viewFile = file => {
+ if (file.link) {
+ window.open(file.link, '_blank')
+ } else {
+ ElMessage.warning('文件链接无效')
+ }
}
// 下载文件
-const downloadFile = (file) => {
- if (file.link) {
- // 创建一个隐藏的a标签来触发下载
- const a = document.createElement('a')
- a.href = file.link
- a.download = file.originalName || file.name
- document.body.appendChild(a)
- a.click()
- document.body.removeChild(a)
- } else {
- ElMessage.warning('文件链接无效')
- }
+const downloadFile = file => {
+ if (file.link) {
+ // 创建一个隐藏的a标签来触发下载
+ const a = document.createElement('a')
+ a.href = file.link
+ a.download = file.originalName || file.name
+ document.body.appendChild(a)
+ a.click()
+ document.body.removeChild(a)
+ } else {
+ ElMessage.warning('文件链接无效')
+ }
}
// 根据部门ID获取部门名称
function getDeptNameById(deptId, deptList) {
// 处理类型转换,确保比较的是相同类型
const targetId = String(deptId)
-
+
// 递归遍历部门树
function findDept(deptList) {
for (const dept of deptList) {
@@ -315,11 +295,11 @@
}
return ''
}
-
+
if (!targetId || !Array.isArray(deptList) || deptList.length === 0) {
return ''
}
-
+
return findDept(deptList)
}
@@ -328,8 +308,7 @@
if (row?.id) {
await loadDetail(row.id)
demandId.value = row.id
- console.log('row.id',demandId.value);
-
+ console.log('row.id', demandId.value)
}
visible.value = true
}
@@ -345,21 +324,9 @@
formData.value = data
}
-// 如果需要加载已上传的文件列表
-const loadUploadedFiles = async (id) => {
- try {
- // 这里根据实际情况调用接口获取已上传的文件列表
- // const response = await getFileListApi({ id })
- // if (response.data?.success) {
- // uploadedFiles.value = response.data.data || []
- // }
- } catch (error) {
- console.error('加载已上传文件失败:', error)
- }
-}
// 拒绝申请
const rejectTheApplication = () => {
- if(responseData.value.length === 0){
+ if (responseData.value.length === 0) {
return ElMessage.warning('请上传数据')
}
// 打开拒绝申请弹框
@@ -367,27 +334,32 @@
}
// 处理拒绝申请确认
-const handleRejectionConfirm = (reason) => {
+const handleRejectionConfirm = reason => {
const id = [responseData.value.attachId]
- console.log('demandId.value',demandId.value);
-
- gdSupplyDemandAuditRejectApi({ attachIds: id, auditOpinion: reason ,demandId:'2013137230848598018'}).then(() => {
- ElMessage.success('拒绝申请成功')
- visible.value = false
- }).catch(error => {
- console.error('拒绝申请失败:', error)
- ElMessage.error('拒绝申请失败,请重试')
- })
+ console.log('demandId.value', demandId.value)
+
+ gdSupplyDemandAuditRejectApi({ attachIds: id, auditOpinion: reason, demandId: demandId.value })
+ .then(() => {
+ ElMessage.success('拒绝申请成功')
+ visible.value = false
+ emit('success')
+ })
+ .catch(error => {
+ console.error('拒绝申请失败:', error)
+ ElMessage.error('拒绝申请失败,请重试')
+ emit('success')
+ })
}
// 审核通过
const approvedByTheReview = () => {
- if(responseData.value.length === 0){
+ if (responseData.value.length === 0) {
return ElMessage.warning('请上传数据')
}
const id = [responseData.value.attachId]
- gdSupplyDemandAuditPassApi({ id }).then(() => {
+ gdSupplyDemandAuditPassApi({ attachIds: id, demandId: demandId.value }).then(() => {
ElMessage.success('审核通过成功')
visible.value = false
+ emit('success')
})
}
--
Gitblit v1.9.3