diff --git a/src/app/pages/DeviceList.vue b/src/app/pages/DeviceList.vue index 94d5c64..5ed3c67 100644 --- a/src/app/pages/DeviceList.vue +++ b/src/app/pages/DeviceList.vue @@ -5,13 +5,6 @@

设备列表

-
@@ -369,47 +382,161 @@ const boardVersionData = [
- -
-
-

板卡版本要求

-
-
- - - - - - - - - - - - - - - - - -
板卡类型要求固件版本校验规则操作
{{ board.boardType }} - - {{ board.requiredVersion }} - - {{ board.validationRule }} -
- - + + +
+
+ +
+

新增设备型号

+ +
+ + +
+
+
+ + +
+ +
+ + +
+ +
+ + +
授权文件按型号绑定,设备激活时自动下载
+
+ +
+ + +
配置文件包含发射参数、采集参数、网络参数等
+
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
绑定预览
+
+
+ 授权文件 + {{ drawerForm.authFile || '未绑定' }}
-
+
+ 配置文件 + {{ drawerForm.configFile || '未绑定' }} +
+
+ 固件版本 + {{ drawerForm.firmwareVersion || '未绑定' }} +
+
+
+ + + + +
+ + +
diff --git a/src/app/pages/DeviceRegistration.vue b/src/app/pages/DeviceRegistration.vue index f1e048e..fe8c9db 100644 --- a/src/app/pages/DeviceRegistration.vue +++ b/src/app/pages/DeviceRegistration.vue @@ -6,8 +6,54 @@ import { Camera, Upload, Check, + Download, + X, + FileSpreadsheet, } from 'lucide-vue-next' +const showImportDialog = ref(false) +const importFile = ref(null) + +const showPhotoDialog = ref(false) +const photoDialogItemId = ref(0) +const photoFiles = ref<{ name: string; url: string }[]>([]) +const photoNote = ref('') + +const openPhotoDialog = (itemId: number) => { + photoDialogItemId.value = itemId + photoFiles.value = [] + photoNote.value = '' + showPhotoDialog.value = true +} + +const onPhotoSelect = (e: Event) => { + const target = e.target as HTMLInputElement + if (target.files) { + for (const f of Array.from(target.files)) { + photoFiles.value.push({ name: f.name, url: URL.createObjectURL(f) }) + } + } + target.value = '' +} + +const removePhoto = (index: number) => { + photoFiles.value.splice(index, 1) +} + +const confirmPhotos = () => { + const item = checklistItems.value.find((i: any) => i.id === photoDialogItemId.value) + if (item) { + item.photos = photoFiles.value.length + item.completed = true + } + showPhotoDialog.value = false +} + +const onFileChange = (e: Event) => { + const target = e.target as HTMLInputElement + if (target.files && target.files.length > 0) importFile.value = target.files[0] +} + const selectedModel = ref('GD30') const checklistItems = ref([ { id: 1, text: '主板安装及固定', completed: true, photos: 3, needPhoto: true, versionCheck: true, versionMatch: true }, @@ -124,8 +170,7 @@ const toggleChecklistItem = (id: number) => { type="text" class="w-full px-3 py-2 border rounded" :style="{ borderColor: '#D9D9D9', backgroundColor: '#FAFAFA' }" - value="张工程师" - readonly + value="张工" /> @@ -167,6 +212,7 @@ const toggleChecklistItem = (id: number) => { - @@ -281,18 +324,20 @@ const toggleChecklistItem = (id: number) => {
- 已上传 {{ item.photos }}张 - +
+ + +
+
+
+

上传照片

+ +
+ +
+ +
+
照片({{ photoFiles.length }}张)
+
+ +
+ + +
+ +
+ + 添加照片 +
+ +
+
+ + +
+
备注
+ +
+
+ +
+ + +
+
+
+ + +
+
+ +
+

导入BOM清单

+ +
+ + +
+ +
+
第一步:下载导入模板
+
+
+ +
+
BOM导入模板.xlsx
+
包含物料编码、物料名称、SN号、规格型号等字段
+
+
+ +
+
+ + +
+
第二步:上传Excel文件
+
+ + + +
+
+ + +
+ 提示:请确保Excel文件格式与模板一致,物料编码和SN号为必填字段。导入后可在BOM清单中编辑。 +
+
+ + +
+ + +
+
+
diff --git a/src/app/pages/LicenseManagement.vue b/src/app/pages/LicenseManagement.vue index edd82d7..80e3339 100644 --- a/src/app/pages/LicenseManagement.vue +++ b/src/app/pages/LicenseManagement.vue @@ -1,205 +1,155 @@