From e3ce21fdc12c12706a6e320cd2acffbe9685d5df Mon Sep 17 00:00:00 2001 From: shil <452061493@qq.com> Date: Wed, 3 Jun 2026 14:37:01 +0800 Subject: [PATCH] =?UTF-8?q?bug=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../enforcement/AppEnfLoginController.java | 4 + .../AppEnforcementRegistrationController.java | 16 ++-- .../controller/common/FileController.java | 6 +- .../common/impl/FileUploadApiImpl.java | 16 ++-- .../register/EnforcementInfoSection.vue | 47 ++++++++-- .../register/NonEnforcementInfoSection.vue | 42 ++++++++- .../src/http/http.js | 5 +- .../src/util/fileUpload.js | 85 ++++++++++--------- .../components/EnforcementRecordList.vue | 47 ++++++++-- .../enforce/enforcementRegister.vue | 26 ++---- .../enforcement/enterpriseScanPreview.vue | 1 + .../enforcement/message/planNoticeList.vue | 4 +- .../program/components/ProgramCreate.vue | 53 +++++++----- 13 files changed, 233 insertions(+), 119 deletions(-) diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppEnfLoginController.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppEnfLoginController.java index df19d459..5f21b605 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppEnfLoginController.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppEnfLoginController.java @@ -1,6 +1,8 @@ package com.zdxt.enforcementcode.controller.app.enforcement; import cn.dev33.satoken.annotation.SaIgnore; +import com.alibaba.fastjson.JSONObject; +import com.zdxt.enforcementcode.controller.app.utils.HttpUtil; import com.zdxt.enforcementcode.common.util.CommonUtil; import com.zdxt.enforcementcode.service.enforcement.IAppEnfLoginService; import com.zdxt.enforcementcode.controller.app.LoginController; @@ -12,9 +14,11 @@ import org.dromara.system.domain.vo.SysDeptVo; import org.dromara.system.domain.vo.SysUserVo; import org.dromara.system.service.ISysDeptService; import org.dromara.system.service.ISysUserService; +import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.*; import java.util.HashMap; +import java.util.List; import java.util.Map; /** diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppEnforcementRegistrationController.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppEnforcementRegistrationController.java index f57c17d9..ee6bf117 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppEnforcementRegistrationController.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppEnforcementRegistrationController.java @@ -180,14 +180,14 @@ public class AppEnforcementRegistrationController extends BaseController { @GetMapping("/queryByEpId") public R> queryByEpId(EnforcementRegistrationBo bo) { - if (Objects.nonNull( LoginHelper.getUserId()) && bo.getWarnType()==0) { - bo.setDeptId(LoginHelper.getDeptId() == null ? null : LoginHelper.getDeptId()); - - SysDeptVo bureauDept = sysDeptService.iterationDeptParentToBureau(LoginHelper.getDeptId()); - if (bureauDept != null) { - bo.setBureauDeptId(bureauDept.getDeptId()); - } - } +// if (Objects.nonNull( LoginHelper.getUserId()) && bo.getWarnType()==0) { +// bo.setDeptId(LoginHelper.getDeptId() == null ? null : LoginHelper.getDeptId()); +// +// SysDeptVo bureauDept = sysDeptService.iterationDeptParentToBureau(LoginHelper.getDeptId()); +// if (bureauDept != null) { +// bo.setBureauDeptId(bureauDept.getDeptId()); +// } +// } List list = enforcementRegistrationService.selectEnforcementRegistrationList(bo); return R.ok(list); diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/common/FileController.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/common/FileController.java index bb2602cd..100d5056 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/common/FileController.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/common/FileController.java @@ -10,7 +10,7 @@ import org.springframework.http.MediaType; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestPart; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; @@ -34,7 +34,7 @@ public class FileController extends BaseController { */ @Log(title = "文件上传", businessType = BusinessType.INSERT) @PostMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) - public R upload(@RequestPart("file") MultipartFile file) { + public R upload(@RequestParam("file") MultipartFile file) { String filePath = fileUploadApi.upload(file); return R.ok("上传成功", filePath); } @@ -49,7 +49,7 @@ public class FileController extends BaseController { */ @Log(title = "文件上传", businessType = BusinessType.INSERT) @PostMapping(value = "/uploadFile", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) - public R uploadFile(@RequestPart("file") MultipartFile file, String dir) { + public R uploadFile(@RequestParam("file") MultipartFile file, String dir) { String filePath = fileUploadApi.uploadWithType(file, dir); return R.ok("上传成功", filePath); } diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/common/impl/FileUploadApiImpl.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/common/impl/FileUploadApiImpl.java index 5aaa42ce..666ed9d0 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/common/impl/FileUploadApiImpl.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/common/impl/FileUploadApiImpl.java @@ -6,31 +6,32 @@ import com.zdxt.enforcementcode.common.util.file.FileUploadUtils; import com.zdxt.enforcementcode.common.util.file.MimeTypeUtils; import com.zdxt.enforcementcode.service.common.FileUploadApi; import org.dromara.common.core.exception.base.BaseException; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; -import java.io.IOException; - /** * 文件上传API-实现类 * * @author QingWang.Li * @date 2020/3/20 16:50 */ +@Slf4j @Service public class FileUploadApiImpl implements FileUploadApi { @Autowired RuoYiConfig ruoYiConfig; - + @Override public String upload(MultipartFile file) { String filePath = RuoYiConfig.getUploadPath(); try { return FileUploadUtils.upload(filePath, file); - } catch (IOException e) { - throw new BaseException("上传失败"); + } catch (Exception e) { + log.error("文件上传失败, path={}", filePath, e); + throw new BaseException("上传失败: " + e.getMessage()); } } @@ -40,7 +41,7 @@ public class FileUploadApiImpl implements FileUploadApi { // 构建完整的上传路径:基础路径 + 指定目录 String basePath = RuoYiConfig.getUploadPath(); String uploadPath; - + if (dir != null && !dir.isEmpty()) { // 去除目录前后的斜杠,避免路径问题 String cleanDir = dir.trim().replaceAll("^/+|/+$", ""); @@ -49,9 +50,10 @@ public class FileUploadApiImpl implements FileUploadApi { // 如果未指定目录,使用默认上传路径 uploadPath = basePath; } - + return FileUploadUtils.upload(uploadPath, file); } catch (Exception e) { + log.error("文件上传失败, dir={}", dir, e); throw new BaseException("上传失败: " + e.getMessage()); } } diff --git a/zdxt-web-client/zdxt-efcode-enforcement-app/src/components/enforcement/register/EnforcementInfoSection.vue b/zdxt-web-client/zdxt-efcode-enforcement-app/src/components/enforcement/register/EnforcementInfoSection.vue index eccfe48a..35706c36 100644 --- a/zdxt-web-client/zdxt-efcode-enforcement-app/src/components/enforcement/register/EnforcementInfoSection.vue +++ b/zdxt-web-client/zdxt-efcode-enforcement-app/src/components/enforcement/register/EnforcementInfoSection.vue @@ -66,11 +66,13 @@ - + - + readonly is-link clearable @click="openTimePicker" /> + + + @@ -126,8 +128,13 @@ \ No newline at end of file + diff --git a/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/enterpriseScanPreview.vue b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/enterpriseScanPreview.vue index 0ede40da..81e53a17 100644 --- a/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/enterpriseScanPreview.vue +++ b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/enterpriseScanPreview.vue @@ -91,6 +91,7 @@
diff --git a/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/message/planNoticeList.vue b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/message/planNoticeList.vue index 7cc39247..fdf2a67f 100644 --- a/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/message/planNoticeList.vue +++ b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/message/planNoticeList.vue @@ -74,7 +74,7 @@ const fetchList = () => { const params = { pageNum: pageNum.value, pageSize: pageSize.value, - planName: searchText.value || undefined, + queryParam: searchText.value || undefined, }; getLawNoticeList(params, (res) => { if (res.code === 200) { @@ -294,4 +294,4 @@ onMounted(() => { :deep(.van-empty) { padding: 60px 0; } - \ No newline at end of file + diff --git a/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/program/components/ProgramCreate.vue b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/program/components/ProgramCreate.vue index 1496bb64..ac4d83aa 100644 --- a/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/program/components/ProgramCreate.vue +++ b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/program/components/ProgramCreate.vue @@ -101,6 +101,7 @@ import { showToast, showSuccessToast } from 'vant'; import { reactive, ref, onMounted } from "vue"; import { publishInspectionProgram } from '@/api/enforcement/index'; import useCommon from '@/store/Common.js'; +import { uploadFile } from '@/util/fileUpload'; const commonStore = useCommon(); @@ -179,27 +180,28 @@ const submitData = reactive({ }) const submit = () => { - // 检查附件是否上传(必填) if (!data.fileListObj || data.fileListObj.length === 0) { showToast('请上传PDF格式附件(5MB以下)'); return; } + const uploading = data.fileListObj.some(f => f.status === 'uploading'); + if (uploading) { + showToast('附件上传中,请稍候'); + return; + } + if (!submitData.fileList.length || !submitData.fileList[0]?.uploadPath) { + showToast('附件上传失败,请重新上传'); + return; + } data.showIsPublish = true; } const addPlan = (val) => { data.showIsPublish = false; - // 处理文件列表,转换为后端需要的格式 - const fileList = data.fileListObj.map(file => ({ - fileName: file.name, - fileUrl: file.url || '' - })); - - // 构建提交数据 const params = { ...submitData, - fileList: fileList + fileList: submitData.fileList }; // 调用发布接口 @@ -282,20 +284,27 @@ const downloadFile = () => { } const uploadFiles = (file) => { - file.status = 'uploading'; - file.message = '上传中...'; - setTimeout(() => { - file.status = 'done'; - file.message = ''; - }, 1000); + const files = Array.isArray(file) ? file : [file]; + files.forEach(f => { + uploadFile(f, (res) => { + const uploadPath = res.url || ''; + if (!uploadPath) { + f.status = 'failed'; + f.message = '上传失败'; + showToast('附件上传失败,请重试'); + return; + } + f.url = uploadPath; + submitData.fileList = [{ + uploadPath, + fileName: f.file?.name || f.name || '' + }]; + }); + }); } -const deleteFile = (file, index) => { - submitData.fileList.filter((item, indexs) => { - if (index.index == indexs) { - submitData.fileList.splice(indexs, 1); - } - }); +const deleteFile = (file, detail) => { + submitData.fileList.splice(detail.index, 1); return true; } @@ -567,4 +576,4 @@ const dateQuarterOnConfirm = ({ selectedOptions }) => { } } } - \ No newline at end of file +