diff --git a/public/image/convert_tif.bat b/public/image/convert_tif.bat new file mode 100644 index 0000000..9e00318 --- /dev/null +++ b/public/image/convert_tif.bat @@ -0,0 +1,55 @@ +@echo off +setlocal + +REM 源文件 +set SRC=odm_orthophoto.tif + +REM 中间文件:去掩膜 + 保留 4 波段 +set TMP1=tmp_nomask.tif + +REM 中间文件:gdalwarp 处理透明通道 +set TMP2=tmp_nomask_alpha.tif + +REM 最终输出文件(性能优化:缩放 + 压缩) +set FINAL=clean_no_mask_optimized.tif + +REM 配置参数 +REM -tr 0.25x 分辨率控制(0.25 倍像素,或者每个像素大小扩大4倍),视你项目需要可调 +REM -co 压缩参数:LZW 是无损压缩方式,TILED=YES 支持分块加载 +REM -r average 使用平均值重采样可保持图像质量 + +echo [1/4] gdal_translate:去除掩膜并保留RGBA四波段... +gdal_translate -b 1 -b 2 -b 3 -b 4 -mask none -co PHOTOMETRIC=RGB -co ALPHA=YES %SRC% %TMP1% +if errorlevel 1 ( + echo ❌ gdal_translate 失败 + exit /b 1 +) + +echo [2/4] gdalwarp:强制生成 Alpha 通道... +gdalwarp -dstalpha %TMP1% %TMP2% +if errorlevel 1 ( + echo ❌ gdalwarp 失败 + exit /b 1 +) + +echo [3/4] gdalwarp:降采样并启用压缩优化... +gdalwarp ^ + -r average ^ + -tr 2 2 ^ + -co COMPRESS=LZW ^ + -co TILED=YES ^ + -co PHOTOMETRIC=RGB ^ + -co ALPHA=YES ^ + %TMP2% %FINAL% +if errorlevel 1 ( + echo ❌ gdalwarp 压缩优化失败 + exit /b 1 +) + +echo [4/4] 清理临时文件... +del %TMP1% +del %TMP2% + +echo ✅ 完成!优化后的 GeoTIFF 已生成:%FINAL% +endlocal +pause diff --git a/src/api/materials/purchaseDoc/index.ts b/src/api/materials/purchaseDoc/index.ts index 699f240..64ec1ab 100644 --- a/src/api/materials/purchaseDoc/index.ts +++ b/src/api/materials/purchaseDoc/index.ts @@ -121,3 +121,10 @@ export const logisticsDetial = (id) => { method: 'get' }); }; + +export const getDetailBASE = (id) => { + return request({ + url: '/cailiaoshebei/purchaseDoc/pic/' + id, + method: 'get' + }); +}; diff --git a/src/api/project/project/index.ts b/src/api/project/project/index.ts index 61dcb29..5b76894 100644 --- a/src/api/project/project/index.ts +++ b/src/api/project/project/index.ts @@ -174,3 +174,15 @@ export const getChildProject = (id: string | number): AxiosPromise { + return request({ + url: '/project/project/save/tender/file', + method: 'put', + data: data + }); +}; diff --git a/src/api/project/project/types.ts b/src/api/project/project/types.ts index 4ccb37d..2e21007 100644 --- a/src/api/project/project/types.ts +++ b/src/api/project/project/types.ts @@ -8,6 +8,7 @@ export interface ProjectVO { * 项目名称 */ projectName: string; + tenderFiles: string; /** * 项目简称 @@ -128,10 +129,10 @@ export interface locationType { projectSite: string; } -export interface childProjectQuery{ - projectName:string; - pid:string; - id?:string +export interface childProjectQuery { + projectName: string; + pid: string; + id?: string; } export interface ProjectForm extends BaseEntity { diff --git a/src/components/FileUpload/index.vue b/src/components/FileUpload/index.vue index 0adc0d8..2fb0c49 100644 --- a/src/components/FileUpload/index.vue +++ b/src/components/FileUpload/index.vue @@ -315,6 +315,11 @@ const uploadedSuccessfully = (res: any) => { fileList.value = []; emit('update:modelValue', ''); // 同步到外部 v-model } + // if (props.autoUpload && props.limit === fileList.value.length) { + // fileUploadRef.value?.clearFiles(); + // fileList.value = []; + // emit('update:modelValue', ''); // 同步到外部 v-model + // } props.onUploadSuccess?.(fileList.value, res); }; diff --git a/src/components/Process/submitVerify.vue b/src/components/Process/submitVerify.vue index f3c3948..b816583 100644 --- a/src/components/Process/submitVerify.vue +++ b/src/components/Process/submitVerify.vue @@ -304,7 +304,6 @@ const emits = defineEmits(['submitCallback', 'cancelCallback']); const handleCompleteTask = async () => { form.value.taskId = taskId.value; form.value.variables = props.taskVariables; - let verify = false; if (buttonObj.value.pop && nestNodeList.value && nestNodeList.value.length > 0) { nestNodeList.value.forEach((e) => { diff --git a/src/views/cory/template/index.vue b/src/views/cory/template/index.vue index 1d4f331..c872665 100644 --- a/src/views/cory/template/index.vue +++ b/src/views/cory/template/index.vue @@ -293,4 +293,17 @@ const handleAddApp = (row) => { onMounted(() => { getList(); }); + +//监听项目id刷新数据 +const listeningProject = watch( + () => currentProject.value?.id, + (nid, oid) => { + queryParams.value.projectId = nid; + getList(); + } +); + +onUnmounted(() => { + listeningProject(); +}); diff --git a/src/views/design/appointment/index.vue b/src/views/design/appointment/index.vue index e3dbba0..f78ce4c 100644 --- a/src/views/design/appointment/index.vue +++ b/src/views/design/appointment/index.vue @@ -510,6 +510,10 @@ const submitForm = async () => { try { // 1. 基础表单验证 await leaveFormRef.value.validate(); +<<<<<<< HEAD +======= + +>>>>>>> origin/ljj // 2. 提交前二次校验:「专业+人员」组合唯一性 let hasDuplicate = false; const allKeys: string[] = []; @@ -567,6 +571,10 @@ const submitForm = async () => { ) ] }; +<<<<<<< HEAD +======= + +>>>>>>> origin/ljj // 4. 数据处理(保持原有逻辑不变) const arr = []; userList.value.forEach((item) => { diff --git a/src/views/materials/usageMaterials/material/indexSon.vue b/src/views/materials/usageMaterials/material/indexSon.vue index 78ae1e1..ef2a93d 100644 --- a/src/views/materials/usageMaterials/material/indexSon.vue +++ b/src/views/materials/usageMaterials/material/indexSon.vue @@ -113,22 +113,26 @@ - - - - + + + + @@ -153,244 +157,222 @@
共 {{ total }} 条记录,当前显示第 {{ (currentPage - 1) * pageSize + 1 }} 至 {{ Math.min(currentPage * pageSize, total) }} 条
- - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - - - - - - + + + + + + + + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - - - - - - - - - - + + + + + + + + + + + - - +