diff --git a/src/apis/equipment/approval.ts b/src/apis/equipment/approval.ts index 8ce061b..65d78e1 100644 --- a/src/apis/equipment/approval.ts +++ b/src/apis/equipment/approval.ts @@ -9,14 +9,38 @@ export const equipmentApprovalApi = { * 分页查询待审批的设备采购申请 */ getPendingApprovals(params: EquipmentApprovalListReq) { - return http.get('/equipment/approval/pending', params) + // 确保分页参数格式正确,与设备采购模块保持一致 + const requestParams = { + ...params, + // 直接使用 pageNum,因为后端分页器需要的是 pageNum 参数 + pageNum: params.pageNum || 1, + pageSize: params.pageSize || 10, + } + + console.log('🔍 API - equipmentApprovalApi.getPendingApprovals 被调用') + console.log('🔍 API - 接收到的参数:', params) + console.log('🔍 API - 最终请求参数:', requestParams) + + return http.get('/equipment/approval/pending', requestParams) }, /** * 分页查询已审批的设备采购申请 */ getApprovedApprovals(params: EquipmentApprovalListReq) { - return http.get('/equipment/approval/approved', params) + // 确保分页参数格式正确,与设备采购模块保持一致 + const requestParams = { + ...params, + // 直接使用 pageNum,因为后端分页器需要的是 pageNum 参数 + pageNum: params.pageNum || 1, + pageSize: params.pageSize || 10, + } + + console.log('🔍 API - equipmentApprovalApi.getApprovedApprovals 被调用') + console.log('🔍 API - 接收到的参数:', params) + console.log('🔍 API - 最终请求参数:', requestParams) + + return http.get('/equipment/approval/approved', requestParams) }, /** diff --git a/src/apis/equipment/procurement.ts b/src/apis/equipment/procurement.ts index cae4d71..dd8b3f6 100644 --- a/src/apis/equipment/procurement.ts +++ b/src/apis/equipment/procurement.ts @@ -20,8 +20,8 @@ export const equipmentProcurementApi = { // 确保参数格式正确 const requestParams = { ...params, - // 确保分页参数存在 - page: params.page || 1, + // 直接使用 pageNum,因为后端分页器需要的是 pageNum 参数 + pageNum: params.pageNum || 1, pageSize: params.pageSize || 10, } diff --git a/src/apis/video-monitor/index.ts b/src/apis/video-monitor/index.ts new file mode 100644 index 0000000..b18a5e2 --- /dev/null +++ b/src/apis/video-monitor/index.ts @@ -0,0 +1,55 @@ +import http from '@/utils/http' + +/* 分页查询 */ +export function getVideoPage(params: { + pageNo: number + pageSize: number + projectId: string + turbineId?: string +}) { + return http.get('/video-monitor/page', params ) +} + +/* 单文件上传 */ +export function uploadSingleVideo( + projectId: string, + turbineId: string, + type: string, + file: File +) { + const fd = new FormData() + fd.append('file', file) + return http.post( + `/video-monitor/${projectId}/upload?turbineId=${turbineId}&type=${type}`, + fd, + { headers: { 'Content-Type': 'multipart/form-data' } } + ) +} + +/* 批量上传 */ +export function uploadBatchVideo( + projectId: string, + turbineId: string, + type: string, + files: File[] +) { + const fd = new FormData() + files.forEach(f => fd.append('files', f)) + return http.post( + `/video-monitor/${projectId}/upload-batch?turbineId=${turbineId}&type=${type}`, + fd, + { headers: { 'Content-Type': 'multipart/form-data' } } + ) +} + +/* 删除 */ +export function deleteVideo(videoId: string) { + return http.del(`/video-monitor/${videoId}`) +} + +/* 下载 */ +export function downloadVideo(videoId: string) { + return http + .get(`/video-monitor/download/${videoId}`, { responseType: 'blob' }) + .then(blob => URL.createObjectURL(blob)) +} \ No newline at end of file diff --git a/src/components/CircularProgress/index.vue b/src/components/CircularProgress/index.vue new file mode 100644 index 0000000..230e212 --- /dev/null +++ b/src/components/CircularProgress/index.vue @@ -0,0 +1,157 @@ + + + + + diff --git a/src/types/auto-imports.d.ts b/src/types/auto-imports.d.ts index eab6be6..369aad4 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, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, VNode, WritableComputedRef } from 'vue' + export type { Component, ComponentPublicInstance, ComputedRef, DirectiveBinding, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, MaybeRef, MaybeRefOrGetter, VNode, WritableComputedRef } from 'vue' import('vue') } diff --git a/src/types/components.d.ts b/src/types/components.d.ts index 73dac61..7fa6b1b 100644 --- a/src/types/components.d.ts +++ b/src/types/components.d.ts @@ -7,69 +7,7 @@ export {} declare module 'vue' { export interface GlobalComponents { - ApprovalAssistant: typeof import('./../components/ApprovalAssistant/index.vue')['default'] - ApprovalMessageItem: typeof import('./../components/NotificationCenter/ApprovalMessageItem.vue')['default'] - Avatar: typeof import('./../components/Avatar/index.vue')['default'] - Breadcrumb: typeof import('./../components/Breadcrumb/index.vue')['default'] - CellCopy: typeof import('./../components/CellCopy/index.vue')['default'] - Chart: typeof import('./../components/Chart/index.vue')['default'] - ColumnSetting: typeof import('./../components/GiTable/src/components/ColumnSetting.vue')['default'] - CronForm: typeof import('./../components/GenCron/CronForm/index.vue')['default'] - CronModal: typeof import('./../components/GenCron/CronModal/index.vue')['default'] - DateRangePicker: typeof import('./../components/DateRangePicker/index.vue')['default'] - DayForm: typeof import('./../components/GenCron/CronForm/component/day-form.vue')['default'] - FilePreview: typeof import('./../components/FilePreview/index.vue')['default'] - GiCellAvatar: typeof import('./../components/GiCell/GiCellAvatar.vue')['default'] - GiCellGender: typeof import('./../components/GiCell/GiCellGender.vue')['default'] - GiCellStatus: typeof import('./../components/GiCell/GiCellStatus.vue')['default'] - GiCellTag: typeof import('./../components/GiCell/GiCellTag.vue')['default'] - GiCellTags: typeof import('./../components/GiCell/GiCellTags.vue')['default'] - GiCodeView: typeof import('./../components/GiCodeView/index.vue')['default'] - GiDot: typeof import('./../components/GiDot/index.tsx')['default'] - GiEditTable: typeof import('./../components/GiEditTable/GiEditTable.vue')['default'] - GiFooter: typeof import('./../components/GiFooter/index.vue')['default'] - GiForm: typeof import('./../components/GiForm/src/GiForm.vue')['default'] - GiIconBox: typeof import('./../components/GiIconBox/index.vue')['default'] - GiIconSelector: typeof import('./../components/GiIconSelector/index.vue')['default'] - GiIframe: typeof import('./../components/GiIframe/index.vue')['default'] - GiOption: typeof import('./../components/GiOption/index.vue')['default'] - GiOptionItem: typeof import('./../components/GiOptionItem/index.vue')['default'] - GiPageLayout: typeof import('./../components/GiPageLayout/index.vue')['default'] - GiSpace: typeof import('./../components/GiSpace/index.vue')['default'] - GiSplitButton: typeof import('./../components/GiSplitButton/index.vue')['default'] - GiSplitPane: typeof import('./../components/GiSplitPane/index.vue')['default'] - GiSplitPaneFlexibleBox: typeof import('./../components/GiSplitPane/components/GiSplitPaneFlexibleBox.vue')['default'] - GiSvgIcon: typeof import('./../components/GiSvgIcon/index.vue')['default'] - GiTable: typeof import('./../components/GiTable/src/GiTable.vue')['default'] - GiTag: typeof import('./../components/GiTag/index.tsx')['default'] - GiThemeBtn: typeof import('./../components/GiThemeBtn/index.vue')['default'] - HourForm: typeof import('./../components/GenCron/CronForm/component/hour-form.vue')['default'] - Icon403: typeof import('./../components/icons/Icon403.vue')['default'] - Icon404: typeof import('./../components/icons/Icon404.vue')['default'] - Icon500: typeof import('./../components/icons/Icon500.vue')['default'] - IconBorders: typeof import('./../components/icons/IconBorders.vue')['default'] - IconTableSize: typeof import('./../components/icons/IconTableSize.vue')['default'] - IconTreeAdd: typeof import('./../components/icons/IconTreeAdd.vue')['default'] - IconTreeReduce: typeof import('./../components/icons/IconTreeReduce.vue')['default'] - ImageImport: typeof import('./../components/ImageImport/index.vue')['default'] - ImageImportWizard: typeof import('./../components/ImageImportWizard/index.vue')['default'] - IndustrialImageList: typeof import('./../components/IndustrialImageList/index.vue')['default'] - JsonPretty: typeof import('./../components/JsonPretty/index.vue')['default'] - MinuteForm: typeof import('./../components/GenCron/CronForm/component/minute-form.vue')['default'] - MonthForm: typeof import('./../components/GenCron/CronForm/component/month-form.vue')['default'] - NotificationCenter: typeof import('./../components/NotificationCenter/index.vue')['default'] - ParentView: typeof import('./../components/ParentView/index.vue')['default'] RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] - SecondForm: typeof import('./../components/GenCron/CronForm/component/second-form.vue')['default'] - SplitPanel: typeof import('./../components/SplitPanel/index.vue')['default'] - TextCopy: typeof import('./../components/TextCopy/index.vue')['default'] - TurbineGrid: typeof import('./../components/TurbineGrid/index.vue')['default'] - UserSelect: typeof import('./../components/UserSelect/index.vue')['default'] - Verify: typeof import('./../components/Verify/index.vue')['default'] - VerifyPoints: typeof import('./../components/Verify/Verify/VerifyPoints.vue')['default'] - VerifySlide: typeof import('./../components/Verify/Verify/VerifySlide.vue')['default'] - WeekForm: typeof import('./../components/GenCron/CronForm/component/week-form.vue')['default'] - YearForm: typeof import('./../components/GenCron/CronForm/component/year-form.vue')['default'] } } diff --git a/src/types/equipment.d.ts b/src/types/equipment.d.ts index 2e423b4..f5d7ca1 100644 --- a/src/types/equipment.d.ts +++ b/src/types/equipment.d.ts @@ -23,8 +23,8 @@ export interface EquipmentPageQuery { invoice?: string barcode?: string importer?: string - page?: number - pageSize?: number + pageNum?: number // 当前页码 - 与后端分页器期望的参数名保持一致 + pageSize?: number // 每页大小 orderBy?: string orderDirection?: string } diff --git a/src/views/operation-platform/data-processing/data-storage/components/raw-data.vue b/src/views/operation-platform/data-processing/data-storage/components/raw-data.vue index c80beb2..035a01a 100644 --- a/src/views/operation-platform/data-processing/data-storage/components/raw-data.vue +++ b/src/views/operation-platform/data-processing/data-storage/components/raw-data.vue @@ -1,407 +1,311 @@