diff --git a/src/apis/attach-info/index.ts b/src/apis/attach-info/index.ts index 47539ce..89aab94 100644 --- a/src/apis/attach-info/index.ts +++ b/src/apis/attach-info/index.ts @@ -24,7 +24,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', @@ -39,7 +39,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', @@ -54,7 +54,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/apis/auth/type.ts b/src/apis/auth/type.ts index ced4dca..ae4d098 100644 --- a/src/apis/auth/type.ts +++ b/src/apis/auth/type.ts @@ -1,64 +1,64 @@ /** 用户信息响应类型 */ export interface UserInfoResponse { - code: number; - status: number; - success: boolean; - msg: string; + code: number + status: number + success: boolean + msg: string data: { - user: UserDetail; - dept: DeptDetail; - roles: RoleDetail[]; - posts: any[]; - }; + user: UserDetail + dept: DeptDetail + roles: RoleDetail[] + posts: any[] + } } /** 用户详细信息 */ export interface UserDetail { - userId: string; - account: string; - name: string; - status: number; - userCode: string; - userStatus: string; - userType: string; - mobile: string; - createTime: string; - avatar?: string; + userId: string + account: string + name: string + status: number + userCode: string + userStatus: string + userType: string + mobile: string + createTime: string + avatar?: string } /** 部门详细信息 */ export interface DeptDetail { - deptId: string; - deptName: string; - parentId: string; - orderNum: number; - leaderId: string; - status: string; + deptId: string + deptName: string + parentId: string + orderNum: number + leaderId: string + status: string } /** 角色详细信息 */ export interface RoleDetail { - roleId: string; - roleName: string; - roleCode: string | null; - roleKey: string; + roleId: string + roleName: string + roleCode: string | null + roleKey: string } /** 用户类型 - 兼容旧版本 */ export interface UserInfo { - id: string; - username: string; - nickname: string; - gender: 0 | 1 | 2; - email: string; - phone: string; - avatar: string; - pwdResetTime: string; - pwdExpired: boolean; - registrationDate: string; - deptName: string; - roles: string[]; - permissions: string[]; + id: string + username: string + nickname: string + gender: 0 | 1 | 2 + email: string + phone: string + avatar: string + pwdResetTime: string + pwdExpired: boolean + registrationDate: string + deptName: string + roles: string[] + permissions: string[] } /** 路由类型 */ diff --git a/src/router/route.ts b/src/router/route.ts index 25d0cf9..6692b50 100644 --- a/src/router/route.ts +++ b/src/router/route.ts @@ -64,201 +64,234 @@ export const systemRoutes: RouteRecordRaw[] = [ path: '/organization', name: 'Organization', component: Layout, - redirect: '/organization/hr/member', + redirect: '/organization/dept', meta: { title: '组织架构', icon: 'user-group', hidden: false, sort: 2 }, children: [ { - path: '/organization/hr', - name: 'HRManagement', - component: () => import('@/components/ParentView/index.vue'), - redirect: '/organization/hr/member', - meta: { title: '人员管理', icon: 'user', hidden: false }, - children: [ - { - path: '/organization/hr/member', - name: 'HRMember', - component: () => import('@/views/system/user/index.vue'), - meta: { title: '成员', icon: 'user', hidden: false }, - }, - { - path: '/organization/hr/dept', - name: 'HRDept', - component: () => import('@/views/system/dept/index.vue'), - meta: { title: '部门', icon: 'dept', hidden: false }, - }, - { - path: '/organization/hr/workload', - name: 'HRWorkload', - component: () => import('@/views/hr/workload/index.vue'), - meta: { title: '任务管理', icon: 'workload', hidden: false }, - }, - { - path: '/organization/hr/attendance', - name: 'HRAttendance', - component: () => import('@/views/hr/attendance/index.vue'), - meta: { title: '考勤', icon: 'attendance', hidden: false }, - }, - { - path: '/organization/hr/performance', - name: 'HRPerformance', - component: () => import('@/components/ParentView/index.vue'), - meta: { title: '绩效', icon: 'performance', hidden: false }, - children: [ - { - path: '/organization/hr/performance/dimention', - name: 'Dimention', - component: () => import('@/views/performance/setting/index.vue'), - meta: { title: '绩效维度', icon: 'performance', hidden: false }, - - }, - { - path: '/organization/hr/performance/rule', - name: 'Rule', - component: () => import('@/views/performance/rule.vue'), - meta: { title: '绩效细则', icon: 'performance', hidden: false }, - - }, - { - path: '/organization/hr/performance/my', - name: 'MyPerformance', - component: () => import('@/views/performance/my.vue'), - meta: { title: '我的绩效', icon: 'performance', hidden: false }, - - }, - ], - }, - { - path: '/organization/hr/salary', - name: 'HRSalary', - component: () => import('@/components/ParentView/index.vue'), - redirect: '/organization/hr/salary/overview', - meta: { title: '工资', icon: 'salary', hidden: false }, - children: [ - { - path: '/organization/hr/salary/overview', - name: 'HRSalaryOverview', - component: () => import('@/components/ParentView/index.vue'), - meta: { title: '工资概览', icon: 'salary', hidden: false }, - children: [ - { - path: '/organization/hr/salary/payroll', - name: 'Payroll', - component: () => import('@/views/salary-management/index.vue'), - meta: { title: '工资单', icon: 'salary', hidden: false }, - - }, - ], - }, - ], - }, - // - // { - // path: '/organization/hr/salary/insurance', - // name: 'HRInsurance', - // component: () => import('@/components/ParentView/index.vue'), - // redirect: '/organization/hr/salary/insurance/overview', - // meta: { title: '保险', icon: 'safety', hidden: false }, - // children: [ - // { - // path: '/organization/hr/salary/insurance/overview', - // name: 'HRInsuranceOverview', - // component: () => import('@/views/hr/salary/insurance/overview/index.vue'), - // meta: { title: '工作台概览', icon: 'dashboard', hidden: false }, - // }, - // { - // path: '/organization/hr/salary/insurance/my-insurance', - // name: 'HRMyInsurance', - // component: () => import('@/views/hr/salary/insurance/my-insurance/index.vue'), - // meta: { title: '我的保险', icon: 'shield', hidden: false }, - // }, - // { - // path: '/organization/hr/salary/insurance/health-records', - // name: 'HRHealthRecords', - // component: () => import('@/views/hr/salary/insurance/health-records/index.vue'), - // meta: { title: '健康档案', icon: 'heart', hidden: false }, - // }, - // { - // path: '/organization/hr/salary/insurance/policy-files', - // name: 'HRPolicyFiles', - // component: () => import('@/views/hr/salary/insurance/policy-files/index.vue'), - // meta: { title: '保单文件', icon: 'file', hidden: false }, - // }, - // { - // path: '/organization/hr/salary/insurance/personal-info', - // name: 'HRPersonalInfo', - // component: () => import('@/views/hr/salary/insurance/personal-info/index.vue'), - // meta: { title: '个人信息', icon: 'user', hidden: false }, - // }, - // ], - // }, - // - { - path: '/organization/hr/salary/system-insurance/health-management', - name: 'HRSystemHealthManagement', - component: () => import('@/views/hr/salary/system-insurance/health-management/index.vue'), - meta: { title: '健康档案管理', icon: 'heart', hidden: false }, - }, - { - path: '/organization/hr/salary/system-insurance', - name: 'HRSystemInsurance', - component: () => import('@/components/ParentView/index.vue'), - redirect: '/organization/hr/salary/system-insurance/overview', - meta: { title: '人员保险', icon: 'settings', hidden: false }, - children: [ - { - path: '/organization/hr/salary/system-insurance/overview', - name: 'HRSystemInsuranceOverview', - component: () => import('@/views/hr/salary/system-insurance/overview/index.vue'), - meta: { title: '工作台概览', icon: 'dashboard', hidden: false }, - }, - { - path: '/organization/hr/salary/system-insurance/management', - name: 'HRSystemInsuranceManagement', - component: () => import('@/views/hr/salary/system-insurance/management/index.vue'), - meta: { title: '保险管理', icon: 'shield', hidden: false }, - }, - { - path: '/organization/hr/salary/system-insurance/file-management', - name: 'HRSystemFileManagement', - component: () => import('@/views/hr/salary/system-insurance/file-management/index.vue'), - meta: { title: '保单文件管理', icon: 'file', hidden: false }, - }, - { - path: '/organization/hr/salary/system-insurance/company-management', - name: 'HRSystemCompanyManagement', - component: () => import('@/views/hr/salary/system-insurance/company-management/index.vue'), - meta: { title: '保险公司管理', icon: 'building', hidden: false }, - }, - { - path: '/organization/hr/salary/system-insurance/type-management', - name: 'HRSystemTypeManagement', - component: () => import('@/views/hr/salary/system-insurance/type-management/index.vue'), - meta: { title: '保险类型管理', icon: 'category', hidden: false }, - }, - ], - }, - { - path: '/organization/hr/salary/certification', - name: 'HRCertification', - component: () => import('@/views/hr/salary/certification/index.vue'), - meta: { title: '人员资质管理', icon: 'idcard', hidden: false }, - }, - { - path: '/organization/hr/contribution', - name: 'HRContribution', - component: () => import('@/views/hr/contribution/index.vue'), - meta: { title: '责献积分制度', icon: 'contribution', hidden: false }, - }, - ], + path: '/organization/user', + name: 'OrganizationUser', + component: () => import('@/views/system/user/index.vue'), + meta: { title: '用户管理', icon: 'user', hidden: false, sort: 2.25 }, }, { - path: '/organization/role', - name: 'OrganizationRole', - component: () => import('@/views/system/role/index.vue'), - meta: { title: '角色管理', icon: 'role', hidden: false }, + path: '/organization/dept', + name: 'OrganizationDept', + component: () => import('@/views/system/dept/index.vue'), + meta: { title: '部门管理', icon: 'mind-mapping', hidden: false, sort: 2.5 }, + }, + { + path: '/organization/post', + name: 'OrganizationPost', + component: () => import('@/views/system/post/index.vue'), + meta: { title: '岗位管理', icon: 'nav', hidden: false, sort: 2.75 }, + }, + { + path: '/organization/hr/workload', + name: 'HRWorkload', + component: () => import('@/views/hr/workload/index.vue'), + meta: { title: '任务管理', icon: 'bookmark', hidden: false }, }, ], }, + // { + // path: '/organization', + // name: 'Organization', + // component: Layout, + // redirect: '/organization/hr/member', + // meta: { title: '组织架构', icon: 'user-group', hidden: false, sort: 2 }, + // children: [ + // { + // path: '/organization/hr', + // name: 'HRManagement', + // component: () => import('@/components/ParentView/index.vue'), + // redirect: '/organization/hr/member', + // meta: { title: '人员管理', icon: 'user', hidden: false }, + // children: [ + // { + // path: '/organization/hr/member', + // name: 'HRMember', + // component: () => import('@/views/system/user/index.vue'), + // meta: { title: '成员', icon: 'user', hidden: false }, + // }, + // { + // path: '/organization/hr/dept', + // name: 'HRDept', + // component: () => import('@/views/system/dept/index.vue'), + // meta: { title: '部门', icon: 'dept', hidden: false }, + // }, + // { + // path: '/organization/hr/workload', + // name: 'HRWorkload', + // component: () => import('@/views/hr/workload/index.vue'), + // meta: { title: '任务管理', icon: 'workload', hidden: false }, + // }, + // { + // path: '/organization/hr/attendance', + // name: 'HRAttendance', + // component: () => import('@/views/hr/attendance/index.vue'), + // meta: { title: '考勤', icon: 'attendance', hidden: false }, + // }, + // { + // path: '/organization/hr/performance', + // name: 'HRPerformance', + // component: () => import('@/components/ParentView/index.vue'), + // meta: { title: '绩效', icon: 'performance', hidden: false }, + // children: [ + // { + // path: '/organization/hr/performance/dimention', + // name: 'Dimention', + // component: () => import('@/views/performance/setting/index.vue'), + // meta: { title: '绩效维度', icon: 'performance', hidden: false }, + // + // }, + // { + // path: '/organization/hr/performance/rule', + // name: 'Rule', + // component: () => import('@/views/performance/rule.vue'), + // meta: { title: '绩效细则', icon: 'performance', hidden: false }, + // + // }, + // { + // path: '/organization/hr/performance/my', + // name: 'MyPerformance', + // component: () => import('@/views/performance/my.vue'), + // meta: { title: '我的绩效', icon: 'performance', hidden: false }, + // + // }, + // ], + // }, + // { + // path: '/organization/hr/salary', + // name: 'HRSalary', + // component: () => import('@/components/ParentView/index.vue'), + // redirect: '/organization/hr/salary/overview', + // meta: { title: '工资', icon: 'salary', hidden: false }, + // children: [ + // { + // path: '/organization/hr/salary/overview', + // name: 'HRSalaryOverview', + // component: () => import('@/components/ParentView/index.vue'), + // meta: { title: '工资概览', icon: 'salary', hidden: false }, + // children: [ + // { + // path: '/organization/hr/salary/payroll', + // name: 'Payroll', + // component: () => import('@/views/salary-management/index.vue'), + // meta: { title: '工资单', icon: 'salary', hidden: false }, + // + // }, + // ], + // }, + // ], + // }, + // + // { + // path: '/organization/hr/salary/insurance', + // name: 'HRInsurance', + // component: () => import('@/components/ParentView/index.vue'), + // redirect: '/organization/hr/salary/insurance/overview', + // meta: { title: '保险', icon: 'safety', hidden: false }, + // children: [ + // { + // path: '/organization/hr/salary/insurance/overview', + // name: 'HRInsuranceOverview', + // component: () => import('@/views/hr/salary/insurance/overview/index.vue'), + // meta: { title: '工作台概览', icon: 'dashboard', hidden: false }, + // }, + // { + // path: '/organization/hr/salary/insurance/my-insurance', + // name: 'HRMyInsurance', + // component: () => import('@/views/hr/salary/insurance/my-insurance/index.vue'), + // meta: { title: '我的保险', icon: 'shield', hidden: false }, + // }, + // { + // path: '/organization/hr/salary/insurance/health-records', + // name: 'HRHealthRecords', + // component: () => import('@/views/hr/salary/insurance/health-records/index.vue'), + // meta: { title: '健康档案', icon: 'heart', hidden: false }, + // }, + // { + // path: '/organization/hr/salary/insurance/policy-files', + // name: 'HRPolicyFiles', + // component: () => import('@/views/hr/salary/insurance/policy-files/index.vue'), + // meta: { title: '保单文件', icon: 'file', hidden: false }, + // }, + // { + // path: '/organization/hr/salary/insurance/personal-info', + // name: 'HRPersonalInfo', + // component: () => import('@/views/hr/salary/insurance/personal-info/index.vue'), + // meta: { title: '个人信息', icon: 'user', hidden: false }, + // }, + // ], + // }, + // + // { + // path: '/organization/hr/salary/system-insurance/health-management', + // name: 'HRSystemHealthManagement', + // component: () => import('@/views/hr/salary/system-insurance/health-management/index.vue'), + // meta: { title: '健康档案管理', icon: 'heart', hidden: false }, + // }, + // { + // path: '/organization/hr/salary/system-insurance', + // name: 'HRSystemInsurance', + // component: () => import('@/components/ParentView/index.vue'), + // redirect: '/organization/hr/salary/system-insurance/overview', + // meta: { title: '人员保险', icon: 'settings', hidden: false }, + // children: [ + // { + // path: '/organization/hr/salary/system-insurance/overview', + // name: 'HRSystemInsuranceOverview', + // component: () => import('@/views/hr/salary/system-insurance/overview/index.vue'), + // meta: { title: '工作台概览', icon: 'dashboard', hidden: false }, + // }, + // { + // path: '/organization/hr/salary/system-insurance/management', + // name: 'HRSystemInsuranceManagement', + // component: () => import('@/views/hr/salary/system-insurance/management/index.vue'), + // meta: { title: '保险管理', icon: 'shield', hidden: false }, + // }, + // { + // path: '/organization/hr/salary/system-insurance/file-management', + // name: 'HRSystemFileManagement', + // component: () => import('@/views/hr/salary/system-insurance/file-management/index.vue'), + // meta: { title: '保单文件管理', icon: 'file', hidden: false }, + // }, + // { + // path: '/organization/hr/salary/system-insurance/company-management', + // name: 'HRSystemCompanyManagement', + // component: () => import('@/views/hr/salary/system-insurance/company-management/index.vue'), + // meta: { title: '保险公司管理', icon: 'building', hidden: false }, + // }, + // { + // path: '/organization/hr/salary/system-insurance/type-management', + // name: 'HRSystemTypeManagement', + // component: () => import('@/views/hr/salary/system-insurance/type-management/index.vue'), + // meta: { title: '保险类型管理', icon: 'category', hidden: false }, + // }, + // ], + // }, + // { + // path: '/organization/hr/salary/certification', + // name: 'HRCertification', + // component: () => import('@/views/hr/salary/certification/index.vue'), + // meta: { title: '人员资质管理', icon: 'idcard', hidden: false }, + // }, + // { + // path: '/organization/hr/contribution', + // name: 'HRContribution', + // component: () => import('@/views/hr/contribution/index.vue'), + // meta: { title: '责献积分制度', icon: 'contribution', hidden: false }, + // }, + // ], + // }, + // { + // path: '/organization/role', + // name: 'OrganizationRole', + // component: () => import('@/views/system/role/index.vue'), + // meta: { title: '角色管理', icon: 'role', hidden: false }, + // }, + // ], + // }, { path: '/asset-management', name: 'AssetManagement', @@ -525,9 +558,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', @@ -776,11 +809,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 }, @@ -791,8 +824,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', @@ -971,14 +1019,26 @@ export const systemRoutes: RouteRecordRaw[] = [ { path: '/user/profile', name: 'UserProfile', - component: () => import('@/views/user/profile/index.vue'), + component: Layout, + redirect: '/user/profile', meta: { title: '个人中心', icon: 'user', hidden: false, sort: 100, }, - children: [], + children: [ + { + path: '/user/profile', + name: 'UserProfile', + component: () => import('@/views/user/profile/index.vue'), + meta: { + title: '个人中心', + icon: 'user', + hidden: false, + }, + }, + ], }, { path: '/enterprise-settings', diff --git a/src/stores/modules/route.ts b/src/stores/modules/route.ts index 06dcf89..7b7ca42 100644 --- a/src/stores/modules/route.ts +++ b/src/stores/modules/route.ts @@ -4,10 +4,9 @@ import type { RouteRecordRaw } from 'vue-router' import { mapTree, toTreeArray } from 'xe-utils' import { cloneDeep, omit } from 'lodash-es' import { constantRoutes, systemRoutes } from '@/router/route' -import { type RouteItem, getUserRouteWithAdapter } from '@/apis' +import type { RouteItem } from '@/apis' import { transformPathToName } from '@/utils' import { asyncRouteModules } from '@/router/asyncModules' -import { convertMenuData, type ApiMenuItem } from '@/utils/menuConverter' const layoutComponentMap = { Layout: () => import('@/layout/index.vue'), @@ -94,91 +93,63 @@ const storeSetup = () => { // 获取路由数据并已通过适配器转换 // const { data } = await getUserRouteWithAdapter() const data = [{ - "id": 1000, - "parentId": 0, - "title": "系统管理", - "type": 1, - "path": "/system", - "name": "System", - "component": "Layout", - "redirect": "/system/user", - "icon": "settings", - "isExternal": false, - "isCache": false, - "isHidden": false, - "sort": 1, - "children": [ - { - "id": 1010, - "parentId": 1000, - "title": "用户管理", - "type": 2, - "path": "/system/user", - "name": "SystemUser", - "component": "system/user/index", - "icon": "user", - "isExternal": false, - "isCache": false, - "isHidden": false, - "sort": 1 - }, - { - "id": 1030, - "parentId": 1000, - "title": "角色管理", - "type": 2, - "path": "/system/role", - "name": "SystemRole", - "component": "system/role/index", - "icon": "user-group", - "isExternal": false, - "isCache": false, - "isHidden": false, - "sort": 2 - }, - { - "id": 1050, - "parentId": 1000, - "title": "菜单管理", - "type": 2, - "path": "/system/menu", - "name": "SystemMenu", - "component": "system/menu/index", - "icon": "menu", - "isExternal": false, - "isCache": false, - "isHidden": false, - "sort": 3 - }, - { - "id": 1070, - "parentId": 1000, - "title": "部门管理", - "type": 2, - "path": "/system/dept", - "name": "SystemDept", - "component": "system/dept/index", - "icon": "mind-mapping", - "isExternal": false, - "isCache": false, - "isHidden": false, - "sort": 4 - }, - { - "id": 1090, - "parentId": 1000, - "title": "岗位管理", - "type": 2, - "path": "/system/post", - "name": "SystemPost", - "component": "system/post/index", - "icon": "settings", - "isExternal": false, - "isCache": false, - "isHidden": false, - "sort": 5 - } - ] + id: 1000, + parentId: 0, + title: '系统管理', + type: 1, + path: '/system', + name: 'System', + component: 'Layout', + redirect: '/system/user', + icon: 'settings', + isExternal: false, + isCache: false, + isHidden: false, + sort: 1, + children: [ + { + id: 1010, + parentId: 1000, + title: '用户管理', + type: 2, + path: '/system/user', + name: 'SystemUser', + component: 'system/user/index', + icon: 'user', + isExternal: false, + isCache: false, + isHidden: false, + sort: 1, + }, + { + id: 1030, + parentId: 1000, + title: '角色管理', + type: 2, + path: '/system/role', + name: 'SystemRole', + component: 'system/role/index', + icon: 'user-group', + isExternal: false, + isCache: false, + isHidden: false, + sort: 2, + }, + { + id: 1050, + parentId: 1000, + title: '菜单管理', + type: 2, + path: '/system/menu', + name: 'SystemMenu', + component: 'system/menu/index', + icon: 'menu', + isExternal: false, + isCache: false, + isHidden: false, + sort: 3, + }, + ], }] // 使用已转换的数据生成路由 const asyncRoutes = formatAsyncRoutes(data as unknown as RouteItem[]) 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 diff --git a/src/views/system/post/index.vue b/src/views/system/post/index.vue index 05ba6a2..64cff0a 100644 --- a/src/views/system/post/index.vue +++ b/src/views/system/post/index.vue @@ -46,11 +46,11 @@ - \ No newline at end of file + diff --git a/src/views/system/role/index.vue b/src/views/system/role/index.vue index 4bab905..2ba0da6 100644 --- a/src/views/system/role/index.vue +++ b/src/views/system/role/index.vue @@ -1,5 +1,4 @@