diff --git a/src/apis/attach-info/index.ts b/src/apis/attach-info/index.ts index e3a7390..58a59cd 100644 --- a/src/apis/attach-info/index.ts +++ b/src/apis/attach-info/index.ts @@ -23,7 +23,7 @@ export function batchAddAttachment(businessType: string, formData: FormData) { * @param businessType 业务类型 * @param formData 表单数据 */ -export function addAttachment(formData: FormData) { +export function addAttachment(formData: FormData) { return request({ url: `/attach-info/model`, method: 'post', @@ -38,7 +38,7 @@ export function addAttachment(formData: FormData) { * @param businessType 业务类型 * @param formData 表单数据 */ -export function addAttachmentByDefectMarkPic(formData: FormData) { +export function addAttachmentByDefectMarkPic(formData: FormData) { return request({ url: `/attach-info/defect_mark_pic`, method: 'post', @@ -53,7 +53,7 @@ export function addAttachmentByDefectMarkPic(formData: FormData) { * @param businessType 业务类型 * @param formData 表单数据 */ -export function addAttachInsurance(formData: FormData) { +export function addAttachInsurance(formData: FormData) { return request({ url: `/attach-info/insurance_file`, method: 'post', diff --git a/src/router/route.ts b/src/router/route.ts index ed38755..dedee24 100644 --- a/src/router/route.ts +++ b/src/router/route.ts @@ -489,9 +489,9 @@ export const systemRoutes: RouteRecordRaw[] = [ }, }, { - path: 'project-management/project-template/information-retrieval', + path: '/project-management/project-template/information-retrieval', name: 'InformationRetrieval', - component: () => import ('@/views/default/error/404.vue'), + component: () => import ('@/views/project-management/bidding/information-retrieval/index.vue'), meta: { title: '信息检索(N)', icon: 'trophy', @@ -740,11 +740,11 @@ export const systemRoutes: RouteRecordRaw[] = [ { path: '/construction-operation-platform/implementation-workflow/data-processing/data-storage/attachment', name: 'AttachmentManagement', - component: () => import('@/views/operation-platform/data-processing/data-storage/index.vue'), + component: () => import('@/views/construction-operation-platform/implementation-workflow/data-processing/data-storage/index.vue'), meta: { title: '附件管理', icon: 'attachment', hidden: false }, }, { - path: '/construction-operation-platform/implementation-workflow/data-processing/data-storage/model-config', + path: '/construction-operation-platform/implementation-workflow/data-processing/model-config', name: 'ModelConfig', component: () => import('@/views/construction-operation-platform/implementation-workflow/data-processing/model-config/index.vue'), meta: { title: '模型配置', icon: 'robot', hidden: false }, @@ -755,8 +755,23 @@ export const systemRoutes: RouteRecordRaw[] = [ { path: '/construction-operation-platform/implementation-workflow/data-processing/data-storage/preprocessed-data', name: 'PreprocessedData', - component: () => import('@/views/construction-operation-platform/implementation-workflow/data-processing/data-preprocessing/index.vue'), + component: () => import('@/components/ParentView/index.vue'), + redirect: '/construction-operation-platform/implementation-workflow/data-processing/data-storage', meta: { title: '数据预处理', icon: 'filter', hidden: false }, + children: [ + { + path: '/construction-operation-platform/implementation-workflow/data-processing/data-storage/preprocessed-data/ImageBatchUpload', + name: 'ImageBatchUpload', + component: () => import('@/views/construction-operation-platform/implementation-workflow/data-processing/data-preprocessing/index.vue'), + meta: { title: '批量上传', icon: 'file', hidden: false }, + }, + { + path: '/construction-operation-platform/implementation-workflow/data-processing/data-storage/preprocessed-data/ImageSorting', + name: 'ImageSorting', + component: () => import('@/views/construction-operation-platform/implementation-workflow/data-processing/image-sorting/index.vue'), + meta: { title: '图像分拣', icon: 'attachment', hidden: false }, + }, + ], }, { path: '/construction-operation-platform/implementation-workflow/data-processing/intelligent-inspection', diff --git a/src/types/auto-imports.d.ts b/src/types/auto-imports.d.ts index 369aad4..eab6be6 100644 --- a/src/types/auto-imports.d.ts +++ b/src/types/auto-imports.d.ts @@ -70,6 +70,6 @@ declare global { // for type re-export declare global { // @ts-ignore - export type { Component, ComponentPublicInstance, ComputedRef, DirectiveBinding, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, MaybeRef, MaybeRefOrGetter, VNode, WritableComputedRef } from 'vue' + export type { Component, ComponentPublicInstance, ComputedRef, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, VNode, WritableComputedRef } from 'vue' import('vue') } diff --git a/src/views/construction-operation-platform/implementation-workflow/data-processing/data-preprocessing/index.vue b/src/views/construction-operation-platform/implementation-workflow/data-processing/data-preprocessing/index.vue index 2fde12e..9be1792 100644 --- a/src/views/construction-operation-platform/implementation-workflow/data-processing/data-preprocessing/index.vue +++ b/src/views/construction-operation-platform/implementation-workflow/data-processing/data-preprocessing/index.vue @@ -1,202 +1,160 @@ \ No newline at end of file + +.thumbnail-cell { + display: flex; + justify-content: center; + align-items: center; + height: 60px; + + .thumbnail-image { + max-height: 60px; + max-width: 80px; + object-fit: contain; + border-radius: 2px; + } + + .file-icon { + font-size: 24px; + color: var(--color-text-3); + } +} + +/* 上传进度框样式 */ +.upload-progress-fixed { + position: fixed; + bottom: 24px; + right: 24px; + width: 360px; + z-index: 1000; + box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12); + border-radius: 8px; + animation: fadeIn 0.3s ease; + + :deep(.arco-card-header) { + border-bottom: 1px solid var(--color-border); + padding-bottom: 12px; + } + + :deep(.arco-progress-text) { + font-size: 14px; + } +} + +.progress-details { + margin-top: 12px; + font-size: 13px; + color: var(--color-text-2); + + p { + display: flex; + align-items: center; + margin: 6px 0; + + .arco-icon { + margin-right: 8px; + font-size: 16px; + } + } +} + +@keyframes fadeIn { + from { opacity: 0; transform: translateY(10px); } + to { opacity: 1; transform: translateY(0); } +} + \ No newline at end of file diff --git a/src/views/construction-operation-platform/implementation-workflow/data-processing/data-storage/components/AttachmentUpload.vue b/src/views/construction-operation-platform/implementation-workflow/data-processing/data-storage/components/AttachmentUpload.vue index 4bfb83e..401861d 100644 --- a/src/views/construction-operation-platform/implementation-workflow/data-processing/data-storage/components/AttachmentUpload.vue +++ b/src/views/construction-operation-platform/implementation-workflow/data-processing/data-storage/components/AttachmentUpload.vue @@ -105,8 +105,16 @@ const formData = reactive({ const fetchBusinessTypes = async () => { try { const res = await getAttachBusinessTypes() + console.log("res:",res); if (res.data) { - businessTypes.value = res.data + res.data.forEach(item => { + const key = Object.keys(item)[0]; + const value = item[key]; + businessTypes.value.push({ + name: value, + code:key + }); + }); } } catch (error) { console.error('获取业务类型失败:', error) diff --git a/src/views/construction-operation-platform/implementation-workflow/data-processing/image-sorting/index.vue b/src/views/construction-operation-platform/implementation-workflow/data-processing/image-sorting/index.vue new file mode 100644 index 0000000..f1625a8 --- /dev/null +++ b/src/views/construction-operation-platform/implementation-workflow/data-processing/image-sorting/index.vue @@ -0,0 +1,603 @@ + + + + + \ No newline at end of file diff --git a/src/views/operation-platform/data-processing/data-storage/components/PreviewModal.vue b/src/views/operation-platform/data-processing/data-storage/components/PreviewModal.vue index 8bdee3a..1b29315 100644 --- a/src/views/operation-platform/data-processing/data-storage/components/PreviewModal.vue +++ b/src/views/operation-platform/data-processing/data-storage/components/PreviewModal.vue @@ -106,12 +106,14 @@ const getAudioUrl = (filePath: string): string => { const openPreview = (item: PreviewItem) => { currentPreviewItem.value = item audioList.value = [] - for (const audio of item.audios) { - let temp={ - audioId:audio.audioId, - url:getAudioUrl(audio.filePath) + if(item.audios){ + for (const audio of item.audios) { + let temp={ + audioId:audio.audioId, + url:getAudioUrl(audio.filePath) + } + audioList.value.push(temp) } - audioList.value.push(temp) } previewModalVisible.value = true diff --git a/src/views/operation-platform/data-processing/data-storage/index.vue b/src/views/operation-platform/data-processing/data-storage/index.vue index b7b461e..3b95a64 100644 --- a/src/views/operation-platform/data-processing/data-storage/index.vue +++ b/src/views/operation-platform/data-processing/data-storage/index.vue @@ -251,15 +251,22 @@ const fetchPartList = async (projectId: string, turbineId: string) => { // 处理筛选变化,获取图像列表 const handleFilterChange = async () => { - if (!filterParams.unit) return + // if (!filterParams.project) return loading.image = true try { let params = { - turbineId: filterParams.unit + projectId: filterParams.project + } + if(filterParams.unit){ + params = { + projectId: filterParams.project, + turbineId: filterParams.unit + } } if(filterParams.component){ params = { + projectId: filterParams.project, turbineId: filterParams.unit, partId: filterParams.component } diff --git a/src/views/project-management/bidding/information-retrieval/components/BiddingDetailModal.vue b/src/views/project-management/bidding/information-retrieval/components/BiddingDetailModal.vue new file mode 100644 index 0000000..992779f --- /dev/null +++ b/src/views/project-management/bidding/information-retrieval/components/BiddingDetailModal.vue @@ -0,0 +1,198 @@ + + + + + \ No newline at end of file diff --git a/src/views/project-management/bidding/information-retrieval/components/CrawlerSettings.vue b/src/views/project-management/bidding/information-retrieval/components/CrawlerSettings.vue new file mode 100644 index 0000000..0131282 --- /dev/null +++ b/src/views/project-management/bidding/information-retrieval/components/CrawlerSettings.vue @@ -0,0 +1,164 @@ + + + + + \ No newline at end of file