diff --git a/.env.development b/.env.development index 21892b7..1c549fa 100644 --- a/.env.development +++ b/.env.development @@ -5,7 +5,7 @@ VITE_APP_TITLE = 新能源项目管理平台 VITE_APP_ENV = 'development' # 开发环境 -VITE_APP_BASE_API = 'http://192.168.110.180:8898' +VITE_APP_BASE_API = 'http://192.168.110.180:8899' # 无人机接口地址 diff --git a/public/favicon.ico b/public/favicon.ico index 3f05e35..3a3f585 100644 Binary files a/public/favicon.ico and b/public/favicon.ico differ diff --git a/src/api/formalities/formalitiesAreConsolidated/index.ts b/src/api/formalities/formalitiesAreConsolidated/index.ts index af8d458..218187c 100644 --- a/src/api/formalities/formalitiesAreConsolidated/index.ts +++ b/src/api/formalities/formalitiesAreConsolidated/index.ts @@ -49,7 +49,7 @@ export const addFormalitiesAreConsolidated = (data: FormalitiesAreConsolidatedFo */ export const updateFormalitiesAreConsolidated = (data: FormalitiesAreConsolidatedForm) => { return request({ - url: '/formalities/formalitiesAreConsolidated', + url: '/formalities/formalitiesAreConsolidated/edit', method: 'put', data: data }); @@ -77,3 +77,27 @@ export const editStatus = (data: FormalitiesAreConsolidatedForm) => { data: data }); }; + +/** + * 查询合规性手续合账文件列表 + * @param query + * @returns {*} + */ +export const listFormalitiesAnnex = (query?: any): AxiosPromise => { + return request({ + url: '/formalities/formalitiesAnnex/list', + method: 'get', + params: query + }); +}; + +/** + * 删除合规性手续合账文件 + * @param id + */ +export const delFormalitiesAnnex = (id: string | number | Array) => { + return request({ + url: '/formalities/formalitiesAnnex/' + id, + method: 'delete' + }); +}; diff --git a/src/api/formalities/listOfFormalities/index.ts b/src/api/formalities/listOfFormalities/index.ts index 000e218..427f8d8 100644 --- a/src/api/formalities/listOfFormalities/index.ts +++ b/src/api/formalities/listOfFormalities/index.ts @@ -61,3 +61,17 @@ export const delListOfFormalities = (id: string | number | Array => { + return request({ + url: '/formalities/formalitiesAreConsolidated/getWhetherItExists', + method: 'get', + params: { + projectId: id + } + }); +}; diff --git a/src/api/materials/purchaseDoc/index.ts b/src/api/materials/purchaseDoc/index.ts index bcaaf4a..699f240 100644 --- a/src/api/materials/purchaseDoc/index.ts +++ b/src/api/materials/purchaseDoc/index.ts @@ -111,3 +111,13 @@ export const purchaseDocPlanList = (id) => { method: 'get' }); }; +/** + * 通过物流单号 物流详情 + * @param id + */ +export const logisticsDetial = (id) => { + return request({ + url: '/cailiaoshebei/ltn/logistics/' + id, + method: 'get' + }); +}; diff --git a/src/assets/logo/logo.png b/src/assets/logo/logo.png index 3f05e35..3a3f585 100644 Binary files a/src/assets/logo/logo.png and b/src/assets/logo/logo.png differ diff --git a/src/components/FileUpload/index.vue b/src/components/FileUpload/index.vue index cea8252..c8a53c9 100644 --- a/src/components/FileUpload/index.vue +++ b/src/components/FileUpload/index.vue @@ -21,6 +21,7 @@ :on-change="handleChange" :on-remove="handleRemove" :method="method" + :http-request="customUpload" >
@@ -89,6 +90,7 @@ import { propTypes } from '@/utils/propTypes'; import { delOss, listByIds } from '@/api/system/oss'; import { globalHeaders } from '@/utils/request'; +import axios from 'axios'; const props = defineProps({ modelValue: { type: [String, Object, Array], @@ -143,6 +145,7 @@ const uploadList = ref([]); const baseUrl = import.meta.env.VITE_APP_BASE_API; const uploadFileUrl = ref(baseUrl + props.uploadUrl); // 上传文件服务器地址 const headers = ref(globalHeaders()); +const pendingFiles = ref([]); const realUploadUrl = computed(() => { const search = new URLSearchParams(props.params).toString(); @@ -237,28 +240,33 @@ interface UploadFileWithOssId extends UploadFile { } const handleUploadSuccess = (res: any, file: UploadFileWithOssId) => { - console.log(props.data); - if (res.code === 200) { - if (res.data) { - uploadList.value.push({ - name: res.data.fileName, - url: res.data.url, - ossId: res.data.ossId - }); - } else { - uploadList.value.push({}); - } + console.log('上传成功'); + // 上传成功,不管 data 是否为空 + uploadList.value.push({ + name: file.name, + url: (res.data && res.data.url) || '', + ossId: (res.data && res.data.ossId) || '' + }); } else { + console.log('失败', res); + number.value--; proxy?.$modal.closeLoading(); - proxy?.$modal.msgError(res.msg); + proxy?.$modal.msgError(res.msg || '上传失败'); fileUploadRef.value?.handleRemove(file); + return; } + uploadedSuccessfully(res); }; const handleChange = (file: any, fileList: any) => { + // 记录 status = 'ready' 的文件 + if (file.status === 'ready') { + pendingFiles.value.push(file); + } + emit('handleChange', file, fileList); }; @@ -290,8 +298,6 @@ const handleDelete = async (index: string | number, type?: string) => { // 上传结束处理 const uploadedSuccessfully = (res: any) => { - console.log(11121); - if (props.isImportInfo) { emit('update:modelValue', 'ok'); fileUploadRef.value?.clearFiles(); @@ -307,8 +313,13 @@ const uploadedSuccessfully = (res: any) => { emit('update:modelValue', listToString(fileList.value)); proxy?.$modal.closeLoading(); - props.onUploadSuccess?.(fileList.value, res); } + if (props.autoUpload) { + fileUploadRef.value?.clearFiles(); + fileList.value = []; + emit('update:modelValue', ''); // 同步到外部 v-model + } + props.onUploadSuccess?.(fileList.value, res); }; // 获取文件名称 @@ -334,13 +345,67 @@ const listToString = (list: any[], separator?: string) => { return strs != '' ? strs.substring(0, strs.length - 1) : ''; }; -const submitUpload = () => { - fileUploadRef.value!.submit(); +// 改造后的 customUpload +const customUpload = async (options: any) => { + if (props.autoUpload) { + // 自动上传,单文件请求 + try { + const formData = new FormData(); + formData.append('file', options.file); + Object.entries(props.data).forEach(([k, v]) => { + if (v !== null && v !== undefined) formData.append(k, v as any); + }); + const res = await axios?.({ + url: realUploadUrl.value, + method: props.method, + data: formData, + headers: { 'Content-Type': 'multipart/form-data', ...headers.value } + }); + handleUploadSuccess(res.data, options.file); + } catch (err) { + handleUploadError(); + } + } else { + // 手动上传,不发请求,只缓存 + pendingFiles.value.push(options.file); + } }; -defineExpose({ - submitUpload -}); +// 改造后的 submitUpload +const submitUpload = async () => { + if (props.autoUpload) { + fileUploadRef.value?.submit(); + return; + } + if (!pendingFiles.value.length) { + return 'noFile'; + } + try { + proxy?.$modal.loading('正在上传文件,请稍候...'); + const formData = new FormData(); + pendingFiles.value.forEach((f) => { + if (f.raw) formData.append('file', f.raw as File); + }); + Object.entries(props.data).forEach(([k, v]) => { + if (v !== null && v !== undefined) formData.append(k, v as any); + }); + const res = await axios?.({ + url: realUploadUrl.value, + method: props.method, + data: formData, + headers: { 'Content-Type': 'multipart/form-data', ...headers.value } + }); + handleUploadSuccess(res.data, {} as any); + pendingFiles.value = []; + fileUploadRef.value?.clearFiles(); + } catch (err) { + handleUploadError(); + } finally { + proxy?.$modal.closeLoading(); + } +}; + +defineExpose({ submitUpload }); diff --git a/src/views/materials/materialsEquipment/materialReceive/word/index.vue b/src/views/materials/materialsEquipment/materialReceive/word/index.vue index 4a4312d..fac7c7e 100644 --- a/src/views/materials/materialsEquipment/materialReceive/word/index.vue +++ b/src/views/materials/materialsEquipment/materialReceive/word/index.vue @@ -1,5 +1,5 @@ - - + + - + + + +
暂无文件
+