Browse Source

bug修复

dev-V1.0.1
蟑螂恶霸 5 months ago
parent
commit
e3ce21fdc1
  1. 4
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppEnfLoginController.java
  2. 16
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppEnforcementRegistrationController.java
  3. 6
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/common/FileController.java
  4. 16
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/common/impl/FileUploadApiImpl.java
  5. 47
      zdxt-web-client/zdxt-efcode-enforcement-app/src/components/enforcement/register/EnforcementInfoSection.vue
  6. 42
      zdxt-web-client/zdxt-efcode-enforcement-app/src/components/enforcement/register/NonEnforcementInfoSection.vue
  7. 5
      zdxt-web-client/zdxt-efcode-enforcement-app/src/http/http.js
  8. 85
      zdxt-web-client/zdxt-efcode-enforcement-app/src/util/fileUpload.js
  9. 47
      zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/components/EnforcementRecordList.vue
  10. 26
      zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/enforce/enforcementRegister.vue
  11. 1
      zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/enterpriseScanPreview.vue
  12. 4
      zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/message/planNoticeList.vue
  13. 53
      zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/program/components/ProgramCreate.vue

4
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;
/**

16
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<List<EnforcementRegistrationVo>> 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<EnforcementRegistrationVo> list = enforcementRegistrationService.selectEnforcementRegistrationList(bo);
return R.ok(list);

6
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<String> upload(@RequestPart("file") MultipartFile file) {
public R<String> 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<String> uploadFile(@RequestPart("file") MultipartFile file, String dir) {
public R<String> uploadFile(@RequestParam("file") MultipartFile file, String dir) {
String filePath = fileUploadApi.uploadWithType(file, dir);
return R.ok("上传成功", filePath);
}

16
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());
}
}

47
zdxt-web-client/zdxt-efcode-enforcement-app/src/components/enforcement/register/EnforcementInfoSection.vue

@ -66,11 +66,13 @@
<!-- 原因 -->
<van-field v-model="formData.reason" name="reason" label="原因" placeholder="请输入原因" readonly />
<!-- 执法时间 -->
<!-- 执法时间(可选,近10天内) -->
<van-field v-model="formData.enforcementTime" name="enforcementTime" label="执法时间" placeholder="请选择执法时间"
readonly />
<!-- <van-field v-model="formData.enforcementTime" name="enforcementTime" label="执法时间" placeholder="请选择执法时间" is-link
readonly :rules="[{ required: true, message: '请选择执法时间' }]" required /> -->
readonly is-link clearable @click="openTimePicker" />
<van-popup v-model:show="showTimePicker" position="bottom" round>
<van-date-picker v-model="datePickerValue" title="选择执法时间" :min-date="minDate" :max-date="maxDate"
@confirm="onTimeConfirm" @cancel="showTimePicker = false" />
</van-popup>
<!-- 联合执法 -->
</div>
@ -126,8 +128,13 @@
</template>
<script setup name="EnforcementInfoSection">
import { computed } from 'vue';
import { computed, ref, onMounted } from 'vue';
import { uploadFile } from '@/util/fileUpload';
import {
getEnforcementTimeDateRange,
parseEnforcementTimeToPicker,
buildEnforcementTimeFromPicker,
} from '@/util/enforcementTimePicker';
const props = defineProps({
formData: {
@ -157,6 +164,34 @@ defineEmits([
'showEntrustedAgencyPicker'
]);
const showTimePicker = ref(false);
const datePickerValue = ref([]);
const minDate = ref(new Date());
const maxDate = ref(new Date());
let defaultPickerValue = [];
onMounted(() => {
const range = getEnforcementTimeDateRange(10);
minDate.value = range.minDate;
maxDate.value = range.maxDate;
defaultPickerValue = range.currentDate;
datePickerValue.value = [...range.currentDate];
});
const openTimePicker = () => {
const parsed = parseEnforcementTimeToPicker(props.formData.enforcementTime);
datePickerValue.value = parsed ? [...parsed] : [...defaultPickerValue];
showTimePicker.value = true;
};
const onTimeConfirm = ({ selectedValues }) => {
const value = buildEnforcementTimeFromPicker(selectedValues);
if (value) {
props.formData.enforcementTime = value;
}
showTimePicker.value = false;
};
// 计算属性:是否有执法人员(转换为字符串用于表单验证)
const hasPerson = computed(() => {
return props.defaultPerson?.name || props.additionalPersons.some(p => p.name) ? '1' : '';
@ -436,4 +471,4 @@ const onAfterReadImage = (file) => {
border-radius: 0.1rem;
}
}
</style>
</style>

42
zdxt-web-client/zdxt-efcode-enforcement-app/src/components/enforcement/register/NonEnforcementInfoSection.vue

@ -61,9 +61,13 @@
<!-- 原因 -->
<van-field v-model="formData.reason" name="reason" label="原因" placeholder="请输入原因" readonly />
<!-- 入企时间 -->
<!-- 入企时间(可选,近10天内) -->
<van-field v-model="formData.enforcementTime" name="enforcementTime" label="入企时间" placeholder="请选择入企时间"
readonly />
readonly is-link clearable @click="openTimePicker" />
<van-popup v-model:show="showTimePicker" position="bottom" round>
<van-date-picker v-model="datePickerValue" title="选择入企时间" :min-date="minDate" :max-date="maxDate"
@confirm="onTimeConfirm" @cancel="showTimePicker = false" />
</van-popup>
<!-- 附件 -->
<div class="file-upload-row">
@ -79,12 +83,22 @@
import { ref, computed, onMounted } from 'vue';
import { uploadFile } from '@/util/fileUpload';
import { loadDict } from '@/util/dictUtil';
import {
getEnforcementTimeDateRange,
parseEnforcementTimeToPicker,
buildEnforcementTimeFromPicker,
} from '@/util/enforcementTimePicker';
// 入企事由选项(从字典接口获取)
const matterOptions = ref([]);
// 弹窗显示状态
const showMatterPicker = ref(false);
const showTimePicker = ref(false);
const datePickerValue = ref([]);
const minDate = ref(new Date());
const maxDate = ref(new Date());
let defaultPickerValue = [];
// 选择入企事由
const selectMatter = ({ selectedOptions }) => {
@ -92,13 +106,33 @@ const selectMatter = ({ selectedOptions }) => {
showMatterPicker.value = false;
};
// 初始化加载入企事由字典
// 初始化加载入企事由字典、时间选择范围
onMounted(() => {
const range = getEnforcementTimeDateRange(10);
minDate.value = range.minDate;
maxDate.value = range.maxDate;
defaultPickerValue = range.currentDate;
datePickerValue.value = [...range.currentDate];
loadDict('no_check_category', (columns) => {
matterOptions.value = columns;
});
});
const openTimePicker = () => {
const parsed = parseEnforcementTimeToPicker(props.formData.enforcementTime);
datePickerValue.value = parsed ? [...parsed] : [...defaultPickerValue];
showTimePicker.value = true;
};
const onTimeConfirm = ({ selectedValues }) => {
const value = buildEnforcementTimeFromPicker(selectedValues);
if (value) {
props.formData.enforcementTime = value;
}
showTimePicker.value = false;
};
const props = defineProps({
formData: {
type: Object,
@ -289,4 +323,4 @@ const onAfterReadImage = (file) => {
border-radius: 0.1rem;
}
}
</style>
</style>

5
zdxt-web-client/zdxt-efcode-enforcement-app/src/http/http.js

@ -15,7 +15,10 @@ const router = $globalRouter;
//请求拦截器添加head
http.interceptors.request.use(
config => {
if(!config.headers['Content-Type']){
// FormData 必须由浏览器/axios 自动设置 multipart boundary
if (config.data instanceof FormData) {
delete config.headers['Content-Type'];
} else if(!config.headers['Content-Type']){
config.headers['Content-Type'] = 'application/json'
}
const token = $globalStore.useCommon.token;

85
zdxt-web-client/zdxt-efcode-enforcement-app/src/util/fileUpload.js

@ -1,51 +1,53 @@
import {_form, _post} from '../http/index'
import { baseUrl } from "../config/env";
import axios from 'axios';
const http = axios.create({
traditional: true,
contentType : "application/json",
timeout: 1000 * 500000, // 1 秒
});
const uploadFile = (files,callback) => {
files.status = "uploading";
files.message = "上传中...";
files.status = "uploading";
// 需要使用 FormData 进行文件上传
let form = new FormData();
form.append("file", files.file);
// 获取 token(从 localStorage 或 sessionStorage 中获取)
const token = $globalStore.useCommon.token;
console.log(token);
axios({
method: "post",
url: baseUrl+ "/app-enf/common/file/upload",
data: form,
headers: {
'clientid': 'f0535c2a32ab4d0496ab9a699b2a7d36',
'Authorization': 'Bearer ' + token
}
})
import http from '../http/http';
/**
* 从上传接口响应中解析文件访问路径(R<String>:data 字段为路径字符串)
*/
const parseUploadFilePath = (res) => {
const body = res?.data;
if (typeof body === 'string') {
return body;
}
if (body && typeof body.data === 'string') {
return body.data;
}
if (body && typeof body.data === 'object' && body.data) {
return body.data.url || body.data.fileUrl || body.data.path || body.data.uploadPath || '';
}
return body?.url || body?.fileUrl || body?.path || '';
};
const uploadFile = (files, callback) => {
files.status = 'uploading';
files.message = '上传中...';
const form = new FormData();
form.append('file', files.file);
http.post('/app-enf/common/file/upload', form)
.then((res) => {
files.status = "done";
files.message = "上传成功";
console.log(res);
callback && callback(res);
const filePath = parseUploadFilePath(res);
if (!filePath) {
files.status = 'failed';
files.message = '上传失败';
console.error('上传响应缺少文件路径', res?.data);
return;
}
files.status = 'done';
files.message = '上传成功';
files.url = filePath;
// 兼容 enforcementPlanAdd 等页面的 res.url 写法
callback && callback({ url: filePath, data: res?.data, raw: res });
})
.catch((err) => {
files.status = "failed";
files.message = "上传失败";
console.log(err);
files.status = 'failed';
files.message = '上传失败';
console.error('文件上传失败', err?.response?.data || err);
});
}
};
const nameCorrect=(name)=>{
//筛选出两个字人名
let name1=[{}];
name1=String(name).split(" ");
// console.log(name1);
if(name1[0].length==2){
if(name1.length>1){
return (String(name1[0]).substr(0,1)+"\u3000"+String(name1[0]).substr(1)+" "+name1[1]);
@ -58,11 +60,10 @@ const nameCorrect=(name)=>{
}
}
// 手机号加密
const encryptPhone=(num)=>{
if(!/^\d{11}$/.test(num))return num;
const al= num.replace(/(\d{3})\d{4}(\d{4})/, "$1****$2");
return al;
}
export{uploadFile,nameCorrect,encryptPhone};
export{uploadFile,nameCorrect,encryptPhone,parseUploadFilePath};

47
zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/components/EnforcementRecordList.vue

@ -41,14 +41,22 @@
</template>
<script setup name="EnforcementRecordList">
import { ref } from 'vue';
import { ref, watch } from 'vue';
import { queryEnfRegistrationList } from '@/api/enforcement/index';
import useCommon from '@/store/Common.js';
const commonStore = useCommon();
const props = defineProps({
enterpriseName: {
type: String,
default: ''
},
/** 企业统一社会信用代码 */
enterpriseNumber: {
type: String,
default: ''
},
isRecordExpanded: {
type: Boolean,
default: false
@ -64,22 +72,38 @@ const loading = ref(false);
// ========== 获取执法记录数据 ==========
const fetchEnfRegistrationList = () => {
if (!props.enterpriseNumber) {
cityRecords.value = [];
return;
}
loading.value = true;
// warnType:1=全市,0=本单位(与后端 AppEnforcementRegistrationController 一致)
const params = {
warnType: recordTab.value === 0 ? 1 : 0,
// pageSize: 20,
// pageNum: 1,
enterpriseNumber: props.enterpriseNumber,
};
// 本单位:传执法单位 id,优先 bureauUnitId,否则用当前用户 deptId
if (recordTab.value === 1) {
const bureauDeptId = commonStore.bureauUnitId || commonStore.deptId;
if (bureauDeptId) {
params.bureauDeptId = bureauDeptId;
}
}
queryEnfRegistrationList(params, (res) => {
loading.value = false;
if (res.code === 200) {
const data = res.data || [];
cityRecords.value = data.filter(item => item !== null && item !== undefined);
const payload = res.data || {};
const rows = payload.list || payload.rows || (Array.isArray(payload) ? payload : []);
cityRecords.value = (Array.isArray(rows) ? rows : []).filter(
item => item !== null && item !== undefined
);
} else {
cityRecords.value = [];
console.error('获取执法记录失败:', res.msg);
}
}, (err) => {
loading.value = false;
cityRecords.value = [];
console.error('获取执法记录接口失败', err);
});
};
@ -91,8 +115,17 @@ const handleRecordTabChange = (tabIndex) => {
fetchEnfRegistrationList();
};
// 初始化加载
fetchEnfRegistrationList();
watch(
() => props.enterpriseNumber,
(val) => {
if (val) {
fetchEnfRegistrationList();
} else {
cityRecords.value = [];
}
},
{ immediate: true }
);
</script>
<style lang="less" scoped>

26
zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/enforce/enforcementRegister.vue

@ -511,37 +511,32 @@ const fetchDetail = (id) => {
formData.jointEnforcement = data.uniteCheck ? '1' : '0';
formData.entrustedEnforcement = data.hasAuto === 1 ? '1' : '0';
formData.entrustedAgency = data.entrustDeptName || '';
// 回填执法依据
if (data.lawEnforcementBasisText) {
formData.enforcementBases = data.lawEnforcementBasisText.split(',').map(b => b.trim());
formData.enforcementBasesIds = new Array(formData.enforcementBases.length).fill('');
}
// 回填执法人员
if (data.lawEnforcer) {
enforcementPersons.value = [{
name: data.lawEnforcer,
enforcementPersons.value = [{
name: data.lawEnforcer,
id: data.lawEnforcerId || '',
phonenumber: data.lawEnforcerId || ''
}];
}
// 回填额外执法人员
additionalPersons.value = [];
if (data.lawEnforcerTwo) {
additionalPersons.value.push({
name: data.lawEnforcerTwo,
additionalPersons.value.push({
name: data.lawEnforcerTwo,
id: data.lawEnforcerIdTwo || '',
phonenumber: data.lawEnforcerIdTwo || ''
});
}
// 加载字典后设置默认时间
const now = new Date();
if (!formData.enforcementTime) {
formData.enforcementTime = `${now.getFullYear()}-${String(now.getMonth() + 1).padStart(2, '0')}-${String(now.getDate()).padStart(2, '0')} ${String(now.getHours()).padStart(2, '0')}:${String(now.getMinutes()).padStart(2, '0')}:${String(now.getSeconds()).padStart(2, '0')}`;
}
} else {
showToast(res.msg || '获取详情失败');
}
@ -624,9 +619,6 @@ onMounted(() => {
matterOptions.value = columns;
});
// 设置当前时间
const now = new Date();
formData.enforcementTime = `${now.getFullYear()}-${String(now.getMonth() + 1).padStart(2, '0')}-${String(now.getDate()).padStart(2, '0')} ${String(now.getHours()).padStart(2, '0')}:${String(now.getMinutes()).padStart(2, '0')}:${String(now.getSeconds()).padStart(2, '0')}`;
});
</script>
@ -723,4 +715,4 @@ onMounted(() => {
}
}
}
</style>
</style>

1
zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/enterpriseScanPreview.vue

@ -91,6 +91,7 @@
<!-- 执法记录 Tab(行政执法模式) -->
<div v-if="currentTab === 1 && !isNonEnforcement" class="tab-content">
<EnforcementRecordList :enterprise-name="enterpriseData?.enterpriseName"
:enterprise-number="enterpriseData?.enterpriseNumber"
:is-record-expanded="isRecordExpanded" @toggle-expand="toggleRecordExpand" />
</div>

4
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;
}
</style>
</style>

53
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 }) => {
}
}
}
</style>
</style>

Loading…
Cancel
Save