-
+
|
@@ -140,22 +140,22 @@
-
+
步骤3: 设置图像采集信息
-
+
@@ -256,30 +256,24 @@
-
+
@@ -287,7 +281,7 @@
diff --git a/src/components/UserSelect/index.vue b/src/components/UserSelect/index.vue
index 129f6de..e14b280 100644
--- a/src/components/UserSelect/index.vue
+++ b/src/components/UserSelect/index.vue
@@ -3,7 +3,7 @@
{
tipWords.value = ''
proxy.$parent.closeBox()
diff --git a/src/hooks/app/useDept.ts b/src/hooks/app/useDept.ts
index cd88dca..947aa2e 100644
--- a/src/hooks/app/useDept.ts
+++ b/src/hooks/app/useDept.ts
@@ -11,18 +11,18 @@ export function useDept(options?: { onSuccess?: () => void }) {
try {
loading.value = true
const res = await getDeptTree({ deptName })
-
+
// 处理部门树数据,确保有title字段用于显示
const processDeptData = (data: any[]): TreeNodeData[] => {
if (!data || !data.length) return []
-
- return data.map((item) => ({
+
+ return data.map(item => ({
key: item.deptId,
- title: item.deptName || '未命名部门', // 将deptName映射为title
- children: item.children ? processDeptData(item.children) : [],
+ title: item.deptName || '未命名部门', // 将deptName映射为title
+ children: item.children ? processDeptData(item.children) : []
}))
}
-
+
deptList.value = processDeptData(res.data || [])
options?.onSuccess && options.onSuccess()
} finally {
diff --git a/src/hooks/app/usePost.ts b/src/hooks/app/usePost.ts
index 964a05a..3a974e9 100644
--- a/src/hooks/app/usePost.ts
+++ b/src/hooks/app/usePost.ts
@@ -2,7 +2,7 @@ import { listPost } from '@/apis/system/post'
import type { PostVO } from '@/apis/system/type'
export function usePost() {
- const postList = ref<{ label: string, value: string }[]>([])
+ const postList = ref<{ label: string; value: string }[]>([])
const loading = ref(false)
// 获取岗位列表
@@ -24,6 +24,6 @@ export function usePost() {
return {
postList,
loading,
- getPostList,
+ getPostList
}
-}
+}
\ No newline at end of file
diff --git a/src/hooks/app/useRole.ts b/src/hooks/app/useRole.ts
index d565f3f..f2c8388 100644
--- a/src/hooks/app/useRole.ts
+++ b/src/hooks/app/useRole.ts
@@ -11,16 +11,16 @@ export function useRole(options?: { onSuccess?: () => void }) {
try {
loading.value = true
const res = await fetchRoleList()
-
+
// 将新的角色数据格式转换为表单需要的 LabelValueState 格式
if (res && res.data) {
- roleList.value = (res.data || []).map((role) => ({
+ roleList.value = (res.data || []).map(role => ({
label: role.roleName,
value: role.roleId,
- disabled: role.status !== '1', // 假设状态为1表示启用
+ disabled: role.status !== '1' // 假设状态为1表示启用
}))
}
-
+
options?.onSuccess && options.onSuccess()
} finally {
loading.value = false
diff --git a/src/layout/LayoutDefault.vue b/src/layout/LayoutDefault.vue
index 4743e4a..9a34aa6 100644
--- a/src/layout/LayoutDefault.vue
+++ b/src/layout/LayoutDefault.vue
@@ -19,6 +19,7 @@ import Asider from './components/Asider/index.vue'
import Header from './components/Header/index.vue'
import Main from './components/Main.vue'
import Tabs from './components/Tabs/index.vue'
+import GiFooter from '@/components/GiFooter/index.vue'
import NoticePopup from '@/views/user/message/components/NoticePopup.vue'
import { useAppStore } from '@/stores'
import { useDevice } from '@/hooks'
diff --git a/src/layout/components/Asider/index.vue b/src/layout/components/Asider/index.vue
index e1731f4..633c881 100644
--- a/src/layout/components/Asider/index.vue
+++ b/src/layout/components/Asider/index.vue
@@ -19,6 +19,7 @@
-
-
diff --git a/src/types/api.d.ts b/src/types/api.d.ts
index 8ade591..fd0593f 100644
--- a/src/types/api.d.ts
+++ b/src/types/api.d.ts
@@ -1,10 +1,10 @@
/** API响应通用类型 */
interface ApiRes {
- code: number | string
- status?: number
- success: boolean
- msg: string
- data: T
+ code: number | string;
+ status?: number;
+ success: boolean;
+ msg: string;
+ data: T;
}
/** 分页响应数据格式 */
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/equipment.d.ts b/src/types/equipment.d.ts
deleted file mode 100644
index 51c1752..0000000
--- a/src/types/equipment.d.ts
+++ /dev/null
@@ -1,179 +0,0 @@
-export interface EquipmentPageQuery {
- equipmentName?: string
- equipmentType?: string
- equipmentStatus?: string
- equipmentSn?: string
- assetCode?: string
- brand?: string
- locationStatus?: string
- healthStatus?: string
- responsiblePerson?: string
- useStatus?: string
- projectId?: string
- userId?: string
- equipmentModel?: string
- specification?: string
- physicalLocation?: string
- supplierName?: string
- maintenancePerson?: string
- inventoryBarcode?: string
- assetRemark?: string
- // 新增搜索字段
- usingDepartment?: string
- invoice?: string
- barcode?: string
- importer?: string
- page?: number
- pageSize?: number
- orderBy?: string
- orderDirection?: string
-}
-
-export interface EquipmentReq {
- equipmentName: string
- equipmentModel: string
- equipmentType: string
- equipmentStatus: string
- useStatus: string
- equipmentSn: string
- assetCode?: string
- brand?: string
- specification?: string
- locationStatus?: string
- physicalLocation?: string
- responsiblePerson?: string
- healthStatus?: string
- purchaseTime?: string
- inStockTime?: string
- activationTime?: string
- expectedScrapTime?: string
- actualScrapTime?: string
- statusChangeTime?: string
- purchaseOrder?: string
- supplierName?: string
- purchasePrice?: number
- currentNetValue?: number
- depreciationMethod?: string
- depreciationYears?: number
- salvageValue?: number
- warrantyExpireDate?: string
- lastMaintenanceDate?: string
- nextMaintenanceDate?: string
- maintenancePerson?: string
- inventoryBarcode?: string
- assetRemark?: string
- // 新增字段
- usingDepartment?: string
- borrowingTime?: string
- returnTime?: string
- outStockTime?: string
- totalUsageTime?: string
- depreciationRate?: number
- depreciationMethodDesc?: string
- invoice?: string
- invoiceStatus?: string
- attachments?: string
- photos?: string
- barcode?: string
- importer?: string
- inventoryTimeStatus1?: string
- inventoryTimeStatus2?: string
- inventoryTimeStatus3?: string
- inventoryCheckTimeStatus1?: string
- inventoryCheckTimeStatus2?: string
- inventoryCheckTimeStatus3?: string
-}
-
-export interface EquipmentResp {
- equipmentId: string
- assetCode?: string
- equipmentName: string
- equipmentType: string
- equipmentTypeLabel?: string
- equipmentModel: string
- equipmentSn: string
- brand?: string
- specification?: string
- equipmentStatus: string
- equipmentStatusLabel?: string
- useStatus: string
- locationStatus?: string
- locationStatusLabel?: string
- physicalLocation?: string
- responsiblePerson?: string
- healthStatus?: string
- healthStatusLabel?: string
- purchaseTime?: string
- inStockTime?: string
- activationTime?: string
- expectedScrapTime?: string
- actualScrapTime?: string
- statusChangeTime?: string
- purchaseOrder?: string
- supplierName?: string
- purchasePrice?: number
- currentNetValue?: number
- depreciationMethod?: string
- depreciationYears?: number
- salvageValue?: number
- warrantyExpireDate?: string
- lastMaintenanceDate?: string
- nextMaintenanceDate?: string
- maintenancePerson?: string
- inventoryBarcode?: string
- assetRemark?: string
- // 新增字段
- usingDepartment?: string
- borrowingTime?: string
- returnTime?: string
- outStockTime?: string
- totalUsageTime?: string
- depreciationRate?: number
- depreciationMethodDesc?: string
- invoice?: string
- invoiceStatus?: string
- attachments?: string
- photos?: string
- barcode?: string
- importer?: string
- inventoryTimeStatus1?: string
- inventoryTimeStatus2?: string
- inventoryTimeStatus3?: string
- inventoryCheckTimeStatus1?: string
- inventoryCheckTimeStatus2?: string
- inventoryCheckTimeStatus3?: string
- projectId?: string
- projectName?: string
- userId?: string
- name?: string
- createTime?: string
- updateTime?: string
-}
-
-export interface EquipmentTypeOption {
- label: string
- value: string
-}
-
-export interface EquipmentStatusOption {
- label: string
- value: string
- color: string
-}
-
-export interface LocationStatusOption {
- label: string
- value: string
- color: string
-}
-
-export interface HealthStatusOption {
- label: string
- value: string
- color: string
-}
-
-export interface DepreciationMethodOption {
- label: string
- value: string
-}
diff --git a/src/types/training.d.ts b/src/types/training.d.ts
deleted file mode 100644
index 0fe1652..0000000
--- a/src/types/training.d.ts
+++ /dev/null
@@ -1,71 +0,0 @@
-export interface TrainingPlanPageQuery {
- planName?: string
- trainingType?: string
- trainingLevel?: string
- status?: string
- trainer?: string
- startTime?: string
- endTime?: string
- page?: number
- pageSize?: number
-}
-
-export interface TrainingPlanReq {
- planName: string
- trainingType: string
- trainingLevel: string
- trainingContent?: string
- trainer?: string
- trainingLocation?: string
- startTime: string
- endTime: string
- status?: string
- maxParticipants?: number
- requirements?: string
- remark?: string
-}
-
-export interface TrainingPlanResp {
- planId: string
- planName: string
- trainingType: string
- trainingLevel: string
- trainingContent?: string
- trainer?: string
- trainingLocation?: string
- startTime: string
- endTime: string
- status: string
- maxParticipants?: number
- currentParticipants?: number
- requirements?: string
- remark?: string
- createTime: string
- createBy: string
- materials?: TrainingMaterialResp[]
- records?: TrainingRecordResp[]
-}
-
-export interface TrainingMaterialResp {
- materialId: string
- materialName: string
- materialType: string
- materialPath?: string
- materialSize?: number
- description?: string
- sortOrder?: number
-}
-
-export interface TrainingRecordResp {
- recordId: string
- userId: string
- userName: string
- deptId?: string
- deptName?: string
- attendanceStatus: string
- signInTime?: string
- signOutTime?: string
- score?: number
- feedback?: string
- certificateId?: string
-}
diff --git a/src/utils/encrypt.ts b/src/utils/encrypt.ts
index b51bb69..33d1b81 100644
--- a/src/utils/encrypt.ts
+++ b/src/utils/encrypt.ts
@@ -18,7 +18,7 @@ export function encryptByMd5(txt: string) {
const publicKey
= 'MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAM51dgYtMyF+tTQt80sfFOpSV27a7t9u'
- + 'aUVeFrdGiVxscuizE7H8SMntYqfn9lp8a5GH5P1/GGehVjUD2gF/4kcCAwEAAQ=='
+ + 'aUVeFrdGiVxscuizE7H8SMntYqfn9lp8a5GH5P1/GGehVjUD2gF/4kcCAwEAAQ=='
export function encryptByRsa(txt: string) {
const encryptor = new JSEncrypt()
@@ -36,7 +36,7 @@ export function encryptByAes(word: string, account: string) {
// 对账号做md5计算,然后取8-24位作为密钥(16个字符)
const accountMd5 = md5(account).toString()
const keyWord = accountMd5.substring(8, 24) // 取8-24位(索引8-23,共16位)
-
+
const key = CryptoJS.enc.Utf8.parse(keyWord)
const arcs = CryptoJS.enc.Utf8.parse(word)
const encrypted = CryptoJS.AES.encrypt(arcs, key, {
diff --git a/src/utils/http.ts b/src/utils/http.ts
index 891c9cb..0ff847e 100644
--- a/src/utils/http.ts
+++ b/src/utils/http.ts
@@ -30,7 +30,7 @@ const StatusCodeMessage: ICodeMessage = {
}
const http: AxiosInstance = axios.create({
- baseURL: import.meta.env.VITE_API_BASE_URL,
+ baseURL: import.meta.env.VITE_API_PREFIX ?? import.meta.env.VITE_API_BASE_URL,
timeout: 30 * 1000,
})
@@ -70,10 +70,10 @@ http.interceptors.response.use(
if (data && data.rows !== undefined && data.data === undefined) {
data.data = data.rows
}
-
+
// 兼容不同的API响应结构
const { success, code, msg } = data
-
+
// 检查响应类型是否是blob
if (response.request.responseType === 'blob') {
const contentType = data.type
@@ -96,7 +96,7 @@ http.interceptors.response.use(
return response
}
}
-
+
// 判断请求是否成功:明确的success字段为true,或者code为200都视为成功
const isSuccess = success !== undefined ? success : (code === 200 || code === '200')
if (isSuccess) {
@@ -139,22 +139,17 @@ const request = async (config: AxiosRequestConfig): Promise {
// 处理返回数据结构,兼容rows和data字段
const responseData = res.data
-
+
// 如果返回的数据中有rows字段但没有data字段,将rows赋值给data
if (responseData.rows !== undefined && responseData.data === undefined) {
responseData.data = responseData.rows
}
-
- // 兼容后端返回的 status/code 格式
- if (responseData.status === 200 || responseData.code === 200 || responseData.code === '200') {
- responseData.success = true
- }
-
+
// 如果返回的code是200但没有设置success字段,将success设置为true
if ((responseData.code === 200 || responseData.code === '200') && responseData.success === undefined) {
responseData.success = true
}
-
+
return responseData
})
.catch((err: { msg: string }) => Promise.reject(err))
diff --git a/src/utils/menuConverter.ts b/src/utils/menuConverter.ts
index 127a021..cdfa8e2 100644
--- a/src/utils/menuConverter.ts
+++ b/src/utils/menuConverter.ts
@@ -4,31 +4,31 @@
// API返回的菜单项类型
export interface ApiMenuItem {
- menuId: string
- parentId: string
- menuName: string
- menuType: string // 'catalog' | 'route'
- orderNum: number
- visible: string
- children?: ApiMenuItem[]
- [key: string]: any // 其他可能的字段
+ menuId: string;
+ parentId: string;
+ menuName: string;
+ menuType: string; // 'catalog' | 'route'
+ orderNum: number;
+ visible: string;
+ children?: ApiMenuItem[];
+ [key: string]: any; // 其他可能的字段
}
// 前端需要的菜单项类型
export interface FrontendMenuItem {
- id: number | string
- parentId: number | string
- title: string
- type: number // 1表示目录,2表示菜单
- path: string
- name: string
- component: string
- icon: string
- isExternal: boolean
- isCache: boolean
- isHidden: boolean
- sort: number
- children?: FrontendMenuItem[]
+ id: number | string;
+ parentId: number | string;
+ title: string;
+ type: number; // 1表示目录,2表示菜单
+ path: string;
+ name: string;
+ component: string;
+ icon: string;
+ isExternal: boolean;
+ isCache: boolean;
+ isHidden: boolean;
+ sort: number;
+ children?: FrontendMenuItem[];
}
/**
@@ -37,14 +37,14 @@ export interface FrontendMenuItem {
const convertMenuType = (menuType: string): number => {
switch (menuType.toLowerCase()) {
case 'catalog':
- return 1
+ return 1;
case 'route':
- return 2
+ return 2;
case 'button':
- return 3
+ return 3;
default:
// 默认为菜单类型
- return 2
+ return 2;
}
}
@@ -52,7 +52,7 @@ const convertMenuType = (menuType: string): number => {
* 是否隐藏: '0' -> false, '1' -> true
*/
const convertVisible = (visible: string): boolean => {
- return visible === '1' // '1'为隐藏,'0'为显示
+ return visible === '1'; // '1'为隐藏,'0'为显示
}
/**
@@ -60,27 +60,27 @@ const convertVisible = (visible: string): boolean => {
*/
const convertMenuItem = (apiItem: ApiMenuItem): FrontendMenuItem => {
// 根据menuType生成默认的path和component
- let path = ''
- let component = ''
- let name = ''
-
+ let path = '';
+ let component = '';
+ let name = '';
+
// 简单的名称生成,去掉空格,保持首字母大写,非首字母小写
const generateName = (menuName: string): string => {
return menuName.replace(/\s+/g, '')
.replace(/^./, (match) => match.toUpperCase())
- .replace(/[\u4E00-\u9FA5]/g, '') // 移除中文字符
- }
+ .replace(/[\u4e00-\u9fa5]/g, ''); // 移除中文字符
+ };
if (apiItem.menuType.toLowerCase() === 'catalog') {
- path = `/${apiItem.menuName.toLowerCase().replace(/\s+/g, '-')}`
- component = 'Layout'
- name = generateName(apiItem.menuName)
+ path = `/${apiItem.menuName.toLowerCase().replace(/\s+/g, '-')}`;
+ component = 'Layout';
+ name = generateName(apiItem.menuName);
} else {
// 假设route类型菜单都在某个catalog下
- const parentName = apiItem.menuName.toLowerCase().replace(/\s+/g, '-')
- path = `/system/${parentName}`
- component = `system/${parentName}/index`
- name = `System${generateName(apiItem.menuName)}`
+ const parentName = apiItem.menuName.toLowerCase().replace(/\s+/g, '-');
+ path = `/system/${parentName}`;
+ component = `system/${parentName}/index`;
+ name = `System${generateName(apiItem.menuName)}`;
}
return {
@@ -88,21 +88,21 @@ const convertMenuItem = (apiItem: ApiMenuItem): FrontendMenuItem => {
parentId: apiItem.parentId,
title: apiItem.menuName,
type: convertMenuType(apiItem.menuType),
- path,
- name,
- component,
+ path: path,
+ name: name,
+ component: component,
icon: 'settings', // 默认图标
isExternal: false,
isCache: false,
isHidden: convertVisible(apiItem.visible),
sort: apiItem.orderNum || 0,
- children: apiItem.children ? apiItem.children.map((child) => convertMenuItem(child)) : [],
- }
+ children: apiItem.children ? apiItem.children.map(child => convertMenuItem(child)) : []
+ };
}
/**
* 转换API返回的菜单数据为前端需要的格式
*/
export const convertMenuData = (apiMenuData: ApiMenuItem[]): FrontendMenuItem[] => {
- return apiMenuData.map((item) => convertMenuItem(item))
-}
+ return apiMenuData.map(item => convertMenuItem(item));
+}
\ No newline at end of file
diff --git a/src/views/code/generator/index.vue b/src/views/code/generator/index.vue
index 5a000ef..2684aaa 100644
--- a/src/views/code/generator/index.vue
+++ b/src/views/code/generator/index.vue
@@ -1,7 +1,7 @@
-
+
@@ -28,7 +28,7 @@
-
+
@@ -73,4 +73,4 @@
.company-overview {
padding: 16px;
}
-
+
\ No newline at end of file
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 cecd5a3..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 @@
-
-
-
-
-
-
-
-
+
+
+
+
+
+ {{ uploadState.currentFile || '准备中...' }}
+ 已完成 {{ uploadState.uploadedCount }}/{{ uploadState.totalCount }}
+ 状态: {{ getStatusText(uploadState.status) }}
+
+
-
-
-
-
-
+
+
-
+
+
-
+
- {{ project.name }}
-
+ v-for="project in projectList"
+ :key="project.id"
+ :value="project.id"
+ :label="project.name"
+ />
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 选择文件夹
+
+
+
+
+
+
+
+ 清空列表
+
+
+
+
+
+ 开始上传
+
+
+
-
-
-
-
-
- {{ record.fileName }}
-
-
-
-
- {{ record.fileType }}
-
-
-
- {{ record.fileSize }}
-
-
- {{ record.uploadTime }}
-
-
-
-
+
+
-
-
-
-
-
-
-
-
- 图像处理
-
- 去噪
- 增强
- 裁剪
- 旋转校正
+
+
+
+
+
+ ![预览]()
+
+
+
+
+
+
+
+ {{ record.type }}
+
+
+
+ {{ formatFileSize(record.size) }}
+
+
+
-
-
-
-
-
-
-
- 输出格式
-
-
- JPG
- PNG
- TIFF
- MP4
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 准备预处理...
- 正在处理中...
-
-
-
- {{ processingProgress }}%
-
-
-
-
-
- 上一步
-
- 开始预处理
-
-
- 下一步
-
-
-
-
-
-
-
-
-
-
-
- 预处理完成
- 数据预处理已成功完成,共处理了 {{ selectedFiles.length }} 个文件
-
-
-
-
+
+
@@ -204,190 +162,349 @@
+
+.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/AttachmentManagement.vue b/src/views/construction-operation-platform/implementation-workflow/data-processing/data-storage/components/AttachmentManagement.vue
index 3433b2e..19265cb 100644
--- a/src/views/construction-operation-platform/implementation-workflow/data-processing/data-storage/components/AttachmentManagement.vue
+++ b/src/views/construction-operation-platform/implementation-workflow/data-processing/data-storage/components/AttachmentManagement.vue
@@ -37,11 +37,11 @@
-
+
搜索
-
+
重置
@@ -55,17 +55,17 @@
-
+
批量下载
-
-
+
批量删除
@@ -75,14 +75,14 @@
:loading="loading"
:data="tableData"
:pagination="pagination"
+ @page-change="onPageChange"
row-key="id"
:row-selection="{
type: 'checkbox',
showCheckedAll: true,
- selectedRowKeys,
- onChange: onSelectionChange,
+ selectedRowKeys: selectedRowKeys,
+ onChange: onSelectionChange
}"
- @page-change="onPageChange"
>
@@ -116,11 +116,11 @@
-
+
预览
-
+
下载
-
+
删除
@@ -160,18 +160,18 @@
@@ -275,7 +275,7 @@ defineExpose({
align-items: center;
padding: 16px 20px;
border-bottom: 1px solid #e5e7eb;
-
+
h3 {
margin: 0;
font-size: 16px;
@@ -290,11 +290,11 @@ defineExpose({
flex-direction: column;
overflow-y: scroll;
height: 600px;
-
+
.panel-section {
padding: 16px 20px;
border-bottom: 1px solid #f3f4f6;
-
+
.section-header {
display: flex;
justify-content: space-between;
@@ -351,4 +351,4 @@ defineExpose({
}
}
}
-
+
\ No newline at end of file
diff --git a/src/views/construction-operation-platform/implementation-workflow/data-processing/intelligent-inspection/defect-algorithm/components/DefectDetailsForm.vue b/src/views/construction-operation-platform/implementation-workflow/data-processing/intelligent-inspection/defect-algorithm/components/DefectDetailsForm.vue
index aeb57ba..0c3cc26 100644
--- a/src/views/construction-operation-platform/implementation-workflow/data-processing/intelligent-inspection/defect-algorithm/components/DefectDetailsForm.vue
+++ b/src/views/construction-operation-platform/implementation-workflow/data-processing/intelligent-inspection/defect-algorithm/components/DefectDetailsForm.vue
@@ -3,10 +3,10 @@
-
+
@@ -15,12 +15,12 @@
-
+
-
+
-
+
{{ level.name }}
-
+
-
-
+
-
+ 取消
+
+
+ 保存缺陷
+
+
+
+
@@ -249,7 +249,7 @@ const getImageUrl = (imagePath: string): string => {
justify-content: center;
align-items: center;
flex-shrink: 0;
-
+
.zoom-text {
min-width: 50px;
text-align: center;
@@ -356,4 +356,4 @@ const getImageUrl = (imagePath: string): string => {
}
}
}
-
+
\ No newline at end of file
diff --git a/src/views/construction-operation-platform/implementation-workflow/data-processing/intelligent-inspection/defect-algorithm/components/ProjectTree.vue b/src/views/construction-operation-platform/implementation-workflow/data-processing/intelligent-inspection/defect-algorithm/components/ProjectTree.vue
index b0804bb..d58e5cd 100644
--- a/src/views/construction-operation-platform/implementation-workflow/data-processing/intelligent-inspection/defect-algorithm/components/ProjectTree.vue
+++ b/src/views/construction-operation-platform/implementation-workflow/data-processing/intelligent-inspection/defect-algorithm/components/ProjectTree.vue
@@ -15,10 +15,10 @@
-
-
-
-
+
+
+
+
{{ node.name }}
({{ node.imageCount }})
@@ -30,11 +30,11 @@
+
\ No newline at end of file
diff --git a/src/views/enterprise-dashboard/application-data/index.vue b/src/views/enterprise-dashboard/application-data/index.vue
index cd93d18..d451903 100644
--- a/src/views/enterprise-dashboard/application-data/index.vue
+++ b/src/views/enterprise-dashboard/application-data/index.vue
@@ -1,481 +1,484 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
-
- {{ record.trend >= 0 ? '+' : '' }}{{ record.trend }}%
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ record.trend >= 0 ? '+' : '' }}{{ record.trend }}%
+
+
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+ {{ record.trend >= 0 ? '+' : '' }}{{ record.trend }}%
+
+
+
+
+
-
-
- {{ record.trend >= 0 ? '+' : '' }}{{ record.trend }}%
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+ {{ record.trend >= 0 ? '+' : '' }}{{ record.trend }}%
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
- {{ record.trend >= 0 ? '+' : '' }}{{ record.trend }}%
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
\ No newline at end of file
diff --git a/src/views/enterprise-dashboard/function-usage/index.vue b/src/views/enterprise-dashboard/function-usage/index.vue
index 877e6c3..3a03b42 100644
--- a/src/views/enterprise-dashboard/function-usage/index.vue
+++ b/src/views/enterprise-dashboard/function-usage/index.vue
@@ -1,375 +1,375 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ record.trend >= 0 ? '+' : '' }}{{ record.trend }}%
+
+
+
+
+
-
-
- {{ record.trend >= 0 ? '+' : '' }}{{ record.trend }}%
-
-
-
-
-
-
-
+
+
-
-
-
+
+
+
+
-
+
+
+
\ No newline at end of file
diff --git a/src/views/enterprise-dashboard/member-data/index.vue b/src/views/enterprise-dashboard/member-data/index.vue
index bd71e61..00ad5a5 100644
--- a/src/views/enterprise-dashboard/member-data/index.vue
+++ b/src/views/enterprise-dashboard/member-data/index.vue
@@ -1,494 +1,494 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ record.rank }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ record.lateCount }}
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ record.rank }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
\ No newline at end of file
diff --git a/src/views/enterprise-dashboard/overview/index.vue b/src/views/enterprise-dashboard/overview/index.vue
index 0a89389..4ccbb5b 100644
--- a/src/views/enterprise-dashboard/overview/index.vue
+++ b/src/views/enterprise-dashboard/overview/index.vue
@@ -1,266 +1,267 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
\ No newline at end of file
diff --git a/src/views/enterprise-settings/admin-permissions/index.vue b/src/views/enterprise-settings/admin-permissions/index.vue
index 85b434a..20816b8 100644
--- a/src/views/enterprise-settings/admin-permissions/index.vue
+++ b/src/views/enterprise-settings/admin-permissions/index.vue
@@ -13,16 +13,16 @@
@refresh="search"
>
-
-
+
@@ -35,27 +35,27 @@
-
+
{{ record.adminType }}
-
+
{{ getStatusText(record.status) }}
-
+
-
{{ permission }}
@@ -65,27 +65,27 @@
-
+
-
{{ record.isOnline ? '在线' : '离线' }}
-
+
详情
编辑
重置密码
-
{{ record.status === 'active' ? '禁用' : '启用' }}
@@ -96,18 +96,18 @@
+
\ No newline at end of file
diff --git a/src/views/hr/contribution/index.vue b/src/views/hr/contribution/index.vue
index e10b666..d8251ff 100644
--- a/src/views/hr/contribution/index.vue
+++ b/src/views/hr/contribution/index.vue
@@ -13,16 +13,16 @@
@refresh="search"
>
-
-
+
@@ -35,19 +35,19 @@
-
+
{{ record.currentPoints }}分
-
+
{{ record.pointLevel }}
-
+
@@ -99,17 +99,17 @@
+
\ No newline at end of file
diff --git a/src/views/hr/salary/certification/index.vue b/src/views/hr/salary/certification/index.vue
index 7d69d63..53e9cc3 100644
--- a/src/views/hr/salary/certification/index.vue
+++ b/src/views/hr/salary/certification/index.vue
@@ -5,7 +5,7 @@
人员资质管理
-
+
新增资质
@@ -30,13 +30,13 @@
-
+
搜索
-
+
重置
@@ -47,19 +47,15 @@
-
+
{{ getUserName(record.userId) }}
-
+
-
@@ -81,10 +77,8 @@
-
+
@@ -102,10 +96,8 @@
-
+
{{ item.label }}
@@ -113,10 +105,8 @@
-
+
{{ user.name }}({{ user.account }})
@@ -139,18 +129,14 @@
-
+
@@ -164,9 +150,9 @@
+
\ No newline at end of file
diff --git a/src/views/hr/salary/insurance/health-records/index.vue b/src/views/hr/salary/insurance/health-records/index.vue
index 62d7f43..0e22117 100644
--- a/src/views/hr/salary/insurance/health-records/index.vue
+++ b/src/views/hr/salary/insurance/health-records/index.vue
@@ -14,7 +14,7 @@
正常
-
+
-
+
|