diff --git a/src/apis/project/type.ts b/src/apis/project/type.ts index cbdb186..506cb93 100644 --- a/src/apis/project/type.ts +++ b/src/apis/project/type.ts @@ -117,17 +117,22 @@ export interface ProjectKanbanStats { /** 项目看板数据 */ export interface ProjectKanbanData { - inProgressProjects: never[] + inProgressProjects: ProjectCard[] preparingProjects: ProjectCard[] ongoingProjects: ProjectCard[] pendingProjects: ProjectCard[] + suspendedProjects: ProjectCard[] + completedProjects: ProjectCard[] + acceptanceProjects: ProjectCard[] + collectionProjects: ProjectCard[] + settledProjects: ProjectCard[] } /** 项目卡片信息 */ export interface ProjectCard { id: string | number name: string - status: 'preparing' | 'ongoing' | 'pending' + status: number | 'preparing' | 'ongoing' | 'pending' | 'inProgress' | 'suspended' | 'completed' | 'acceptance' | 'collection' | 'settled' budget: number manager: string teamSize: number @@ -139,6 +144,9 @@ export interface ProjectCard { alerts?: ProjectAlert[] teamMembers: TeamMemberResp[] requirements: ProjectRequirementResp[] + farmName?: string + scale?: string + createTime?: string } /** 项目异常信息 */ 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/types/components.d.ts b/src/types/components.d.ts index 7fa6b1b..73dac61 100644 --- a/src/types/components.d.ts +++ b/src/types/components.d.ts @@ -7,7 +7,69 @@ 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/views/bussiness-data/bussiness.vue b/src/views/bussiness-data/bussiness.vue index 49f236c..dcc7abf 100644 --- a/src/views/bussiness-data/bussiness.vue +++ b/src/views/bussiness-data/bussiness.vue @@ -4,10 +4,9 @@ @@ -102,29 +101,7 @@ - - + @@ -305,7 +282,7 @@ -
{{ formatFileSize(file.fileSize || file.size) }}
+
{{ formatFileListSize(file.fileSize || file.size) }}
@@ -682,7 +659,7 @@ const fileListTemp = ref([]); const folderFormRef = ref(null); const uploadFormRef = ref(null); const uploadRef = ref(null); -const folderColor = '#165DFF'; +const folderColor = 'var(--color-primary)'; const refreshing = ref(false); const folderSubmitting = ref(false); const uploading = ref(false); @@ -1624,7 +1601,7 @@ const fileColor = (extension) => { bmp: '#722ed1', webp: '#13c2c2' }; - return colorMap[extension.toLowerCase()] || '#8c8c8c'; + return colorMap[extension.toLowerCase()] || 'var(--color-text-3)'; }; @@ -1881,8 +1858,8 @@ const showTextPreview = async (blob, fileName) => { maxWidth: '100%', maxHeight: '70vh', overflow: 'auto', - backgroundColor: '#f8f9fa', - border: '1px solid #e9ecef', + backgroundColor: 'var(--color-fill-1)', + border: '1px solid var(--color-border)', borderRadius: '8px', padding: '20px', fontFamily: "'Consolas', 'Monaco', 'Courier New', monospace", @@ -1890,7 +1867,7 @@ const showTextPreview = async (blob, fileName) => { lineHeight: '1.6', whiteSpace: 'pre-wrap', wordBreak: 'break-word', - color: '#333', + color: 'var(--color-text-1)', textAlign: 'left' } }, text) @@ -2336,6 +2313,21 @@ const formatFileSize = (fileSize) => { return `${(size / (1024 * 1024 * 1024)).toFixed(1)} GB`; }; +// 专门用于文件列表的格式化函数(假设后端返回的是KB单位) +const formatFileListSize = (fileSize) => { + const size = Number(fileSize); + if (isNaN(size) || size < 0) return '未知'; + + // 假设后端返回的是KB单位 + if (size < 1024) { + return `${size} KB`; + } else if (size < 1024 * 1024) { + return `${(size / 1024).toFixed(1)} MB`; + } else { + return `${(size / (1024 * 1024)).toFixed(1)} GB`; + } +}; + const fileTypeText = (type) => { @@ -2458,7 +2450,7 @@ onMounted(() => { \ No newline at end of file diff --git a/src/views/project-management/personnel-dispatch/construction-personnel.vue b/src/views/project-management/personnel-dispatch/construction-personnel.vue index 7deaaf4..c25741e 100644 --- a/src/views/project-management/personnel-dispatch/construction-personnel.vue +++ b/src/views/project-management/personnel-dispatch/construction-personnel.vue @@ -41,20 +41,6 @@
- -
- - 当前应用了搜索筛选条件 - - 清除所有筛选 - -
- @@ -72,7 +57,6 @@ placeholder="请选择项目岗位" style="width: 150px" allow-clear - @change="handleSearch" > - + 搜索 @@ -121,7 +99,6 @@
- - - -