diff --git a/src/components.d.ts b/src/components.d.ts
index 330454d..8473a0c 100644
--- a/src/components.d.ts
+++ b/src/components.d.ts
@@ -22,6 +22,7 @@ declare module 'vue' {
HomeWarning_list: typeof import('./components/home/warning_list.vue')['default']
MessageList: typeof import('./components/message/list.vue')['default']
ProjectItem: typeof import('./components/project/item.vue')['default']
+ ReportDeviceHeader: typeof import('./components/report/deviceHeader.vue')['default']
ReportItem: typeof import('./components/report/item.vue')['default']
SettingsProjectForm: typeof import('./components/settings/projectForm.vue')['default']
SettingsProjectSettings: typeof import('./components/settings/projectSettings.vue')['default']
diff --git a/src/components/report/deviceHeader.vue b/src/components/report/deviceHeader.vue
new file mode 100644
index 0000000..64dd8a3
--- /dev/null
+++ b/src/components/report/deviceHeader.vue
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+
diff --git a/src/components/report/item.vue b/src/components/report/item.vue
index 461a278..0f1d19d 100644
--- a/src/components/report/item.vue
+++ b/src/components/report/item.vue
@@ -1,5 +1,5 @@
@@ -66,7 +83,7 @@ defineProps<{
{{ passRate }} 合格率
-
+
查看详情>
diff --git a/src/pages/report/detail/index.vue b/src/pages/report/detail/index.vue
new file mode 100644
index 0000000..5eabbe2
--- /dev/null
+++ b/src/pages/report/detail/index.vue
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/warning/detail/index.vue b/src/pages/warning/detail/index.vue
index c05b30c..49fcad6 100644
--- a/src/pages/warning/detail/index.vue
+++ b/src/pages/warning/detail/index.vue
@@ -10,7 +10,9 @@ const warningData = ref(null)
onLoad((options) => {
if (options?.data) {
+ console.log('111111111111111', options.data)
warningData.value = JSON.parse(decodeURIComponent(options.data))
+ console.log('11111111111111111222222', warningData.value)
}
})
diff --git a/src/uni-pages.d.ts b/src/uni-pages.d.ts
index 54140ae..460e1dc 100644
--- a/src/uni-pages.d.ts
+++ b/src/uni-pages.d.ts
@@ -12,6 +12,7 @@ type _LocationUrl =
"/pages/settings/index" |
"/pages/warning/index" |
"/pages/work/index" |
+ "/pages/report/detail/index" |
"/pages/warning/detail/index";
interface NavigateToOptions {
diff --git a/src/utils/storage.ts b/src/utils/storage.ts
new file mode 100644
index 0000000..8758538
--- /dev/null
+++ b/src/utils/storage.ts
@@ -0,0 +1,127 @@
+/**
+ * Storage 工具类
+ *
+ * 使用方式:
+ * import storage from '@/utils/storage'
+ *
+ * // 存储
+ * storage.set('key', value)
+ * storage.set('key', value, 60 * 1000) // 带过期时间(毫秒)
+ *
+ * // 获取
+ * const data = storage.get('key')
+ * const data = storage.get('key', '默认值') // 带默认值
+ *
+ * // 删除
+ * storage.remove('key')
+ *
+ * // 清空所有
+ * storage.clear()
+ *
+ * // 判断是否存在
+ * storage.has('key')
+ *
+ * // 获取所有key
+ * storage.keys()
+ */
+
+interface StorageItem {
+ value: T
+ expire?: number // 过期时间戳
+}
+
+const storage = {
+ /**
+ * 存储数据
+ * @param key 键
+ * @param value 值
+ * @param expire 过期时间(毫秒),不传则永不过期
+ */
+ set(key: string, value: T, expire?: number): void {
+ const item: StorageItem = {
+ value,
+ }
+ if (expire) {
+ item.expire = Date.now() + expire
+ }
+ uni.setStorageSync(key, JSON.stringify(item))
+ },
+
+ /**
+ * 获取数据
+ * @param key 键
+ * @param defaultValue 默认值
+ * @returns 存储的值或默认值
+ */
+ get(key: string, defaultValue?: T): T | undefined {
+ try {
+ const raw = uni.getStorageSync(key)
+ if (!raw)
+ return defaultValue
+
+ const item: StorageItem = JSON.parse(raw)
+
+ // 检查是否过期
+ if (item.expire && item.expire < Date.now()) {
+ this.remove(key)
+ return defaultValue
+ }
+
+ return item.value
+ }
+ catch {
+ return defaultValue
+ }
+ },
+
+ /**
+ * 删除数据
+ * @param key 键
+ */
+ remove(key: string): void {
+ uni.removeStorageSync(key)
+ },
+
+ /**
+ * 清空所有数据
+ */
+ clear(): void {
+ uni.clearStorageSync()
+ },
+
+ /**
+ * 判断是否存在
+ * @param key 键
+ * @returns 是否存在
+ */
+ has(key: string): boolean {
+ try {
+ const raw = uni.getStorageSync(key)
+ if (!raw)
+ return false
+
+ const item: StorageItem = JSON.parse(raw)
+
+ // 检查是否过期
+ if (item.expire && item.expire < Date.now()) {
+ this.remove(key)
+ return false
+ }
+
+ return true
+ }
+ catch {
+ return false
+ }
+ },
+
+ /**
+ * 获取所有key
+ * @returns key数组
+ */
+ keys(): string[] {
+ return Object.keys(uni.getStorageInfoSync().keys)
+ },
+}
+
+export default storage