From d8bc554368a78a0ad218b0f5903939fcc344b93a Mon Sep 17 00:00:00 2001
From: zhangwencui <1064582902@qq.com>
Date: 星期五, 06 三月 2026 16:58:34 +0800
Subject: [PATCH] 巡检管理更名

---
 src/pages/equipmentManagement/inspection/index.vue |  881 +++++++++++++++++++++++++++++----------------------------
 1 files changed, 449 insertions(+), 432 deletions(-)

diff --git a/src/pages/equipmentManagement/inspection/index.vue b/src/pages/equipmentManagement/inspection/index.vue
index bb949fa..c8fd6b5 100644
--- a/src/pages/equipmentManagement/inspection/index.vue
+++ b/src/pages/equipmentManagement/inspection/index.vue
@@ -1,8 +1,8 @@
 <template>
   <view class="inspection-page">
     <!-- 浣跨敤閫氱敤椤甸潰澶撮儴缁勪欢 -->
-    <PageHeader title="璁惧宸℃" @back="goBack" />
-    
+    <PageHeader title="璁惧宸℃"
+                @back="goBack" />
     <!-- 缁熻淇℃伅鍗$墖 -->
     <view class="stats-cards">
       <view class="stat-card">
@@ -18,15 +18,20 @@
         <text class="stat-label">寰呭贰妫�</text>
       </view>
     </view>
-
     <!-- 宸℃娓呭崟 -->
-    <view class="inspection-list" v-if="inspectionList.length > 0">
-      <view v-for="(item, index) in inspectionList" :key="index">
-        <view class="inspection-item" @click="startInspection(item)">
+    <view class="inspection-list"
+          v-if="inspectionList.length > 0">
+      <view v-for="(item, index) in inspectionList"
+            :key="index">
+        <view class="inspection-item"
+              @click="startInspection(item)">
           <view class="item-header">
             <view class="item-left">
-              <view class="device-icon" :class="getStatusClass(item.status)">
-                <up-icon :name="getStatusIcon(item.status)" size="16" color="#ffffff"></up-icon>
+              <view class="device-icon"
+                    :class="getStatusClass(item.status)">
+                <up-icon :name="getStatusIcon(item.status)"
+                         size="16"
+                         color="#ffffff"></up-icon>
               </view>
               <view class="device-info">
                 <text class="device-name">{{ item.deviceName }}</text>
@@ -34,14 +39,13 @@
               </view>
             </view>
             <view class="status-tag">
-              <u-tag :type="getTagType(item.status)" size="mini">
+              <u-tag :type="getTagType(item.status)"
+                     size="mini">
                 {{ getStatusText(item.status) }}
               </u-tag>
             </view>
           </view>
-          
           <up-divider></up-divider>
-          
           <view class="item-details">
             <view class="detail-row">
               <text class="detail-label">璁惧缂栧彿</text>
@@ -55,472 +59,485 @@
               <text class="detail-label">璐熻矗浜�</text>
               <text class="detail-value">{{ item.inspector || '-' }}</text>
             </view>
-            <view class="detail-row" v-if="item.status === 2">
+            <view class="detail-row"
+                  v-if="item.status === 2">
               <text class="detail-label">瀹屾垚鏃堕棿</text>
               <text class="detail-value">{{ formatDateTime(item.completedTime) || '-' }}</text>
             </view>
           </view>
-          
           <!-- 鎿嶄綔鎸夐挳 -->
           <view class="action-buttons">
-            <u-button
-              type="primary"
-              size="small"
-              class="action-btn"
-              :disabled="item.status === 2"
-              @click.stop="startInspection(item)"
-            >
+            <u-button type="primary"
+                      size="small"
+                      class="action-btn"
+                      :disabled="item.status === 2"
+                      @click.stop="startInspection(item)">
               {{ item.status === 0 ? '寮�濮嬪贰妫�' : item.status === 1 ? '缁х画宸℃' : '鏌ョ湅璇︽儏' }}
             </u-button>
-            <u-button
-              type="success"
-              size="small"
-              class="action-btn"
-              :disabled="item.status !== 1"
-              @click.stop="scanQRCode(item)"
-            >
+            <u-button type="success"
+                      size="small"
+                      class="action-btn"
+                      :disabled="item.status !== 1"
+                      @click.stop="scanQRCode(item)">
               鎵爜鎵撳崱
             </u-button>
           </view>
         </view>
       </view>
     </view>
-    
-    <view v-else class="no-data">
-      <up-empty mode="data" text="鏆傛棤宸℃浠诲姟"></up-empty>
+    <view v-else
+          class="no-data">
+      <up-empty mode="data"
+                text="鏆傛棤宸℃浠诲姟"></up-empty>
     </view>
   </view>
 </template>
 
 <script setup>
-import { ref, computed, onMounted } from 'vue'
-import { onShow } from '@dcloudio/uni-app'
-import PageHeader from '@/components/PageHeader.vue'
-// import { getInspectionList } from '@/api/inspectionUpload/index'
-import dayjs from 'dayjs'
+  import { ref, computed, onMounted } from "vue";
+  import { onShow } from "@dcloudio/uni-app";
+  import PageHeader from "@/components/PageHeader.vue";
+  // import { getInspectionList } from '@/api/inspectionUpload/index'
+  import dayjs from "dayjs";
 
-// 閫変腑鐨勬棩鏈�
-const selectedDate = ref(Date.now())
+  // 閫変腑鐨勬棩鏈�
+  const selectedDate = ref(Date.now());
 
-// 宸℃娓呭崟鏁版嵁
-const inspectionList = ref([])
+  // 宸℃娓呭崟鏁版嵁
+  const inspectionList = ref([]);
 
-// 鏄剧ず鎻愮ず淇℃伅
-const showToast = (message) => {
-  uni.showToast({
-    title: message,
-    icon: 'none'
-  })
-}
+  // 鏄剧ず鎻愮ず淇℃伅
+  const showToast = message => {
+    uni.showToast({
+      title: message,
+      icon: "none",
+    });
+  };
 
-// 璁$畻缁熻鏁版嵁
-const totalCount = computed(() => inspectionList.value.length)
-const completedCount = computed(() => inspectionList.value.filter(item => item.status === 2).length)
-const pendingCount = computed(() => inspectionList.value.filter(item => item.status === 0).length)
+  // 璁$畻缁熻鏁版嵁
+  const totalCount = computed(() => inspectionList.value.length);
+  const completedCount = computed(
+    () => inspectionList.value.filter(item => item.status === 2).length
+  );
+  const pendingCount = computed(
+    () => inspectionList.value.filter(item => item.status === 0).length
+  );
 
-// 杩斿洖涓婁竴椤�
-const goBack = () => {
-  uni.navigateBack()
-}
+  // 杩斿洖涓婁竴椤�
+  const goBack = () => {
+    uni.navigateBack();
+  };
 
-// 鏃ユ湡鏍煎紡鍖栧櫒
-const dateFormatter = (type, value) => {
-  if (type === 'year') {
-    return `${value}骞碻
-  }
-  if (type === 'month') {
-    return `${value}鏈坄
-  }
-  if (type === 'day') {
-    return `${value}鏃
-  }
-  return value
-}
-
-// 鏍煎紡鍖栨棩鏈�
-const formatDate = (timestamp) => {
-  return dayjs(timestamp).format('YYYY骞碝M鏈圖D鏃�')
-}
-
-// 鏍煎紡鍖栨棩鏈熸椂闂�
-const formatDateTime = (dateStr) => {
-  if (!dateStr) return ''
-  return dayjs(dateStr).format('MM-DD HH:mm')
-}
-
-// 鏃ユ湡鏀瑰彉浜嬩欢
-const onDateChange = (value) => {
-  selectedDate.value = value.value
-  getList()
-}
-
-// 鑾峰彇鐘舵�佹牱寮忕被
-const getStatusClass = (status) => {
-  switch (status) {
-    case 0: return 'status-pending'
-    case 1: return 'status-progress'
-    case 2: return 'status-completed'
-    default: return 'status-pending'
-  }
-}
-
-// 鑾峰彇鐘舵�佸浘鏍�
-const getStatusIcon = (status) => {
-  switch (status) {
-    case 0: return 'clock'
-    case 1: return 'play-circle'
-    case 2: return 'checkmark-circle'
-    default: return 'clock'
-  }
-}
-
-// 鑾峰彇鏍囩绫诲瀷
-const getTagType = (status) => {
-  switch (status) {
-    case 0: return 'warning'
-    case 1: return 'primary'
-    case 2: return 'success'
-    default: return 'info'
-  }
-}
-
-// 鑾峰彇鐘舵�佹枃鏈�
-const getStatusText = (status) => {
-  switch (status) {
-    case 0: return '寰呭贰妫�'
-    case 1: return '宸℃涓�'
-    case 2: return '宸插畬鎴�'
-    default: return '鏈煡'
-  }
-}
-
-// 寮�濮嬪贰妫�
-const startInspection = (item) => {
-  // 瀛樺偍褰撳墠宸℃椤圭洰淇℃伅
-  uni.setStorageSync('currentInspection', item)
-  uni.navigateTo({
-    url: '/pages/equipmentManagement/inspection/detail'
-  })
-}
-
-// 鎵爜鎵撳崱
-const scanQRCode = (item) => {
-  uni.scanCode({
-    success: (res) => {
-      console.log('鎵爜缁撴灉锛�', res)
-      // 楠岃瘉浜岀淮鐮佸唴瀹�
-      if (res.result.includes(item.deviceCode)) {
-        showToast('鎵撳崱鎴愬姛')
-        // 鏇存柊鎵撳崱鐘舵��
-        updateCheckInStatus(item.id)
-      } else {
-        showToast('浜岀淮鐮佷笉鍖归厤锛岃鎵弿姝g‘鐨勮澶囦簩缁寸爜')
-      }
-    },
-    fail: (err) => {
-      console.log('鎵爜澶辫触锛�', err)
-      showToast('鎵爜澶辫触')
+  // 鏃ユ湡鏍煎紡鍖栧櫒
+  const dateFormatter = (type, value) => {
+    if (type === "year") {
+      return `${value}骞碻;
     }
-  })
-}
+    if (type === "month") {
+      return `${value}鏈坄;
+    }
+    if (type === "day") {
+      return `${value}鏃;
+    }
+    return value;
+  };
 
-// 鏇存柊鎵撳崱鐘舵��
-const updateCheckInStatus = (id) => {
-  // 杩欓噷搴旇璋冪敤API鏇存柊鎵撳崱鐘舵��
-  // 鏆傛椂妯℃嫙鏇存柊鏈湴鏁版嵁
-  const item = inspectionList.value.find(item => item.id === id)
-  if (item) {
-    item.checkInTime = new Date().toISOString()
-  }
-}
+  // 鏍煎紡鍖栨棩鏈�
+  const formatDate = timestamp => {
+    return dayjs(timestamp).format("YYYY骞碝M鏈圖D鏃�");
+  };
 
-// 鏌ヨ宸℃娓呭崟
-const getList = () => {
-  uni.showLoading({
-    title: '鍔犺浇涓�...',
-    mask: true
-  })
-  
-  const params = {
-    date: dayjs(selectedDate.value).format('YYYY-MM-DD')
-  }
-  
-  // 妯℃嫙鏁版嵁锛屽疄闄呭簲璇ヨ皟鐢ˋPI
-  setTimeout(() => {
-    inspectionList.value = [
-      {
-        id: 1,
-        deviceName: '绌哄帇鏈篈01',
-        deviceCode: 'KYJ-A01',
-        location: '鐢熶骇杞﹂棿A鍖�',
-        inspectionTime: '08:00-09:00',
-        inspector: '寮犱笁',
-        status: 0, // 0:寰呭贰妫� 1:宸℃涓� 2:宸插畬鎴�
-        completedTime: null
+  // 鏍煎紡鍖栨棩鏈熸椂闂�
+  const formatDateTime = dateStr => {
+    if (!dateStr) return "";
+    return dayjs(dateStr).format("MM-DD HH:mm");
+  };
+
+  // 鏃ユ湡鏀瑰彉浜嬩欢
+  const onDateChange = value => {
+    selectedDate.value = value.value;
+    getList();
+  };
+
+  // 鑾峰彇鐘舵�佹牱寮忕被
+  const getStatusClass = status => {
+    switch (status) {
+      case 0:
+        return "status-pending";
+      case 1:
+        return "status-progress";
+      case 2:
+        return "status-completed";
+      default:
+        return "status-pending";
+    }
+  };
+
+  // 鑾峰彇鐘舵�佸浘鏍�
+  const getStatusIcon = status => {
+    switch (status) {
+      case 0:
+        return "clock";
+      case 1:
+        return "play-circle";
+      case 2:
+        return "checkmark-circle";
+      default:
+        return "clock";
+    }
+  };
+
+  // 鑾峰彇鏍囩绫诲瀷
+  const getTagType = status => {
+    switch (status) {
+      case 0:
+        return "warning";
+      case 1:
+        return "primary";
+      case 2:
+        return "success";
+      default:
+        return "info";
+    }
+  };
+
+  // 鑾峰彇鐘舵�佹枃鏈�
+  const getStatusText = status => {
+    switch (status) {
+      case 0:
+        return "寰呭贰妫�";
+      case 1:
+        return "宸℃涓�";
+      case 2:
+        return "宸插畬鎴�";
+      default:
+        return "鏈煡";
+    }
+  };
+
+  // 寮�濮嬪贰妫�
+  const startInspection = item => {
+    // 瀛樺偍褰撳墠宸℃椤圭洰淇℃伅
+    uni.setStorageSync("currentInspection", item);
+    uni.navigateTo({
+      url: "/pages/equipmentManagement/inspection/detail",
+    });
+  };
+
+  // 鎵爜鎵撳崱
+  const scanQRCode = item => {
+    uni.scanCode({
+      success: res => {
+        console.log("鎵爜缁撴灉锛�", res);
+        // 楠岃瘉浜岀淮鐮佸唴瀹�
+        if (res.result.includes(item.deviceCode)) {
+          showToast("鎵撳崱鎴愬姛");
+          // 鏇存柊鎵撳崱鐘舵��
+          updateCheckInStatus(item.id);
+        } else {
+          showToast("浜岀淮鐮佷笉鍖归厤锛岃鎵弿姝g‘鐨勮澶囦簩缁寸爜");
+        }
       },
-      {
-        id: 2,
-        deviceName: '鍐峰嵈濉擝02',
-        deviceCode: 'LQT-B02',
-        location: '鐢熶骇杞﹂棿B鍖�',
-        inspectionTime: '09:00-10:00',
-        inspector: '鏉庡洓',
-        status: 1,
-        completedTime: null
+      fail: err => {
+        console.log("鎵爜澶辫触锛�", err);
+        showToast("鎵爜澶辫触");
       },
-      {
-        id: 3,
-        deviceName: '鍙樺帇鍣–03',
-        deviceCode: 'BYQ-C03',
-        location: '閰嶇數鎴�',
-        inspectionTime: '10:00-11:00',
-        inspector: '鐜嬩簲',
-        status: 2,
-        completedTime: '2024-01-15T10:30:00'
-      }
-    ]
-    uni.hideLoading()
-  }, 1000)
-  
-  // 瀹為檯API璋冪敤
-  // getInspectionList(params)
-  //   .then((res) => {
-  //     inspectionList.value = res.records || res.data?.records || []
-  //     uni.hideLoading()
-  //   })
-  //   .catch(() => {
-  //     uni.hideLoading()
-  //     showToast('鑾峰彇鏁版嵁澶辫触')
-  //   })
-}
+    });
+  };
 
-onMounted(() => {
-  getList()
-})
+  // 鏇存柊鎵撳崱鐘舵��
+  const updateCheckInStatus = id => {
+    // 杩欓噷搴旇璋冪敤API鏇存柊鎵撳崱鐘舵��
+    // 鏆傛椂妯℃嫙鏇存柊鏈湴鏁版嵁
+    const item = inspectionList.value.find(item => item.id === id);
+    if (item) {
+      item.checkInTime = new Date().toISOString();
+    }
+  };
 
-onShow(() => {
-  getList()
-})
+  // 鏌ヨ宸℃娓呭崟
+  const getList = () => {
+    uni.showLoading({
+      title: "鍔犺浇涓�...",
+      mask: true,
+    });
+
+    const params = {
+      date: dayjs(selectedDate.value).format("YYYY-MM-DD"),
+    };
+
+    // 妯℃嫙鏁版嵁锛屽疄闄呭簲璇ヨ皟鐢ˋPI
+    setTimeout(() => {
+      inspectionList.value = [
+        {
+          id: 1,
+          deviceName: "绌哄帇鏈篈01",
+          deviceCode: "KYJ-A01",
+          location: "鐢熶骇杞﹂棿A鍖�",
+          inspectionTime: "08:00-09:00",
+          inspector: "寮犱笁",
+          status: 0, // 0:寰呭贰妫� 1:宸℃涓� 2:宸插畬鎴�
+          completedTime: null,
+        },
+        {
+          id: 2,
+          deviceName: "鍐峰嵈濉擝02",
+          deviceCode: "LQT-B02",
+          location: "鐢熶骇杞﹂棿B鍖�",
+          inspectionTime: "09:00-10:00",
+          inspector: "鏉庡洓",
+          status: 1,
+          completedTime: null,
+        },
+        {
+          id: 3,
+          deviceName: "鍙樺帇鍣–03",
+          deviceCode: "BYQ-C03",
+          location: "閰嶇數鎴�",
+          inspectionTime: "10:00-11:00",
+          inspector: "鐜嬩簲",
+          status: 2,
+          completedTime: "2024-01-15T10:30:00",
+        },
+      ];
+      uni.hideLoading();
+    }, 1000);
+
+    // 瀹為檯API璋冪敤
+    // getInspectionList(params)
+    //   .then((res) => {
+    //     inspectionList.value = res.records || res.data?.records || []
+    //     uni.hideLoading()
+    //   })
+    //   .catch(() => {
+    //     uni.hideLoading()
+    //     showToast('鑾峰彇鏁版嵁澶辫触')
+    //   })
+  };
+
+  onMounted(() => {
+    getList();
+  });
+
+  onShow(() => {
+    getList();
+  });
 </script>
 
 <style scoped lang="scss">
-@import '@/styles/sales-common.scss';
+  @import "@/styles/sales-common.scss";
 
-.inspection-page {
-  background: #ffffff;
-  min-height: 100vh;
-  padding-bottom: 20px;
-}
-
-
-
-
-
-.stats-cards {
-  display: flex;
-  gap: 10px;
-  padding: 0 15px;
-  margin: 15px 0;
-}
-
-.stat-card {
-  flex: 1;
-  background: #ffffff;
-  border-radius: 12px;
-  padding: 15px 12px;
-  display: flex;
-  flex-direction: column;
-  align-items: center;
-  gap: 6px;
-  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
-  border: 1px solid #f0f0f0;
-  transition: all 0.3s ease;
-  
-  &:hover {
-    transform: translateY(-2px);
-    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
+  .inspection-page {
+    background: #ffffff;
+    min-height: 100vh;
+    padding-bottom: 20px;
   }
-  
-  .stat-number {
-    font-size: 24px;
-    font-weight: 700;
-    color: #1890ff;
+
+  .stats-cards {
+    display: flex;
+    gap: 10px;
+    padding: 0 15px;
+    margin: 15px 0;
   }
-  
-  .stat-label {
+
+  .stat-card {
+    flex: 1;
+    background: #ffffff;
+    border-radius: 12px;
+    padding: 15px 12px;
+    display: flex;
+    flex-direction: column;
+    align-items: center;
+    gap: 6px;
+    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
+    border: 1px solid #f0f0f0;
+    transition: all 0.3s ease;
+
+    &:hover {
+      transform: translateY(-2px);
+      box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
+    }
+
+    .stat-number {
+      font-size: 24px;
+      font-weight: 700;
+      color: #1890ff;
+    }
+
+    .stat-label {
+      font-size: 13px;
+      color: #666;
+      font-weight: 500;
+    }
+  }
+
+  .inspection-list {
+    padding: 0 15px;
+  }
+
+  .inspection-item {
+    background: #ffffff;
+    border-radius: 12px;
+    padding: 15px;
+    margin-bottom: 12px;
+    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
+    border: 1px solid #f0f0f0;
+    transition: all 0.3s ease;
+
+    &:hover {
+      transform: translateY(-2px);
+      box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
+    }
+  }
+
+  .item-header {
+    display: flex;
+    justify-content: space-between;
+    align-items: flex-start;
+    margin-bottom: 12px;
+  }
+
+  .item-left {
+    display: flex;
+    align-items: flex-start;
+    gap: 12px;
+    flex: 1;
+  }
+
+  .device-icon {
+    width: 48px;
+    height: 48px;
+    border-radius: 16px;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    flex-shrink: 0;
+    box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1);
+    transition: all 0.3s ease;
+
+    &.status-pending {
+      background: linear-gradient(135deg, #faad14, #fa8c16);
+      box-shadow: 0 4px 16px rgba(250, 173, 20, 0.3);
+    }
+
+    &.status-progress {
+      background: linear-gradient(135deg, #1890ff, #096dd9);
+      box-shadow: 0 4px 16px rgba(24, 144, 255, 0.3);
+    }
+
+    &.status-completed {
+      background: linear-gradient(135deg, #52c41a, #389e0d);
+      box-shadow: 0 4px 16px rgba(82, 196, 26, 0.3);
+    }
+
+    &:hover {
+      transform: scale(1.05);
+    }
+  }
+
+  .device-info {
+    display: flex;
+    flex-direction: column;
+    gap: 6px;
+  }
+
+  .device-name {
+    font-size: 18px;
+    font-weight: 600;
+    color: #1a1a1a;
+    line-height: 1.3;
+  }
+
+  .device-location {
     font-size: 13px;
-    color: #666;
+    color: #8c8c8c;
+    font-weight: 500;
+    padding: 2px 8px;
+    background: rgba(140, 140, 140, 0.1);
+    border-radius: 12px;
+    display: inline-block;
+    width: fit-content;
+  }
+
+  .status-tag {
+    flex-shrink: 0;
+    transform: scale(1.1);
+  }
+
+  .item-details {
+    margin: 15px 0;
+    background: rgba(248, 250, 252, 0.8);
+    border-radius: 12px;
+    padding: 12px;
+    backdrop-filter: blur(10px);
+  }
+
+  .detail-row {
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    padding: 10px 0;
+    border-bottom: 1px solid rgba(0, 0, 0, 0.06);
+    transition: all 0.2s ease;
+
+    &:last-child {
+      border-bottom: none;
+      padding-bottom: 0;
+    }
+
+    &:hover {
+      background: rgba(255, 255, 255, 0.5);
+      margin: 0 -8px;
+      padding-left: 8px;
+      padding-right: 8px;
+      border-radius: 8px;
+    }
+  }
+
+  .detail-label {
+    font-size: 14px;
+    color: #595959;
+    min-width: 80px;
     font-weight: 500;
   }
-}
 
-.inspection-list {
-  padding: 0 15px;
-}
-
-.inspection-item {
-  background: #ffffff;
-  border-radius: 12px;
-  padding: 15px;
-  margin-bottom: 12px;
-  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
-  border: 1px solid #f0f0f0;
-  transition: all 0.3s ease;
-  
-  &:hover {
-    transform: translateY(-2px);
-    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
+  .detail-value {
+    font-size: 14px;
+    color: #262626;
+    text-align: right;
+    flex: 1;
+    font-weight: 500;
   }
-}
 
-.item-header {
-  display: flex;
-  justify-content: space-between;
-  align-items: flex-start;
-  margin-bottom: 12px;
-}
-
-.item-left {
-  display: flex;
-  align-items: flex-start;
-  gap: 12px;
-  flex: 1;
-}
-
-.device-icon {
-  width: 48px;
-  height: 48px;
-  border-radius: 16px;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  flex-shrink: 0;
-  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1);
-  transition: all 0.3s ease;
-  
-  &.status-pending {
-    background: linear-gradient(135deg, #faad14, #fa8c16);
-    box-shadow: 0 4px 16px rgba(250, 173, 20, 0.3);
+  .action-buttons {
+    display: flex;
+    gap: 10px;
+    margin-top: 15px;
+    padding-top: 15px;
+    border-top: 1px solid rgba(0, 0, 0, 0.06);
   }
-  
-  &.status-progress {
-    background: linear-gradient(135deg, #1890ff, #096dd9);
-    box-shadow: 0 4px 16px rgba(24, 144, 255, 0.3);
+
+  .action-btn {
+    flex: 1;
+    height: 44px;
+    border-radius: 12px;
+    font-weight: 600;
+    font-size: 14px;
+    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
+    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
+
+    &:hover {
+      transform: translateY(-2px);
+      box-shadow: 0 8px 20px rgba(0, 0, 0, 0.15);
+    }
+
+    &:active {
+      transform: translateY(0);
+    }
   }
-  
-  &.status-completed {
-    background: linear-gradient(135deg, #52c41a, #389e0d);
-    box-shadow: 0 4px 16px rgba(82, 196, 26, 0.3);
+
+  .no-data {
+    padding: 80px 20px;
+    text-align: center;
   }
-  
-  &:hover {
-    transform: scale(1.05);
-  }
-}
-
-.device-info {
-  display: flex;
-  flex-direction: column;
-  gap: 6px;
-}
-
-.device-name {
-  font-size: 18px;
-  font-weight: 600;
-  color: #1a1a1a;
-  line-height: 1.3;
-}
-
-.device-location {
-  font-size: 13px;
-  color: #8c8c8c;
-  font-weight: 500;
-  padding: 2px 8px;
-  background: rgba(140, 140, 140, 0.1);
-  border-radius: 12px;
-  display: inline-block;
-  width: fit-content;
-}
-
-.status-tag {
-  flex-shrink: 0;
-  transform: scale(1.1);
-}
-
-.item-details {
-  margin: 15px 0;
-  background: rgba(248, 250, 252, 0.8);
-  border-radius: 12px;
-  padding: 12px;
-  backdrop-filter: blur(10px);
-}
-
-.detail-row {
-  display: flex;
-  justify-content: space-between;
-  align-items: center;
-  padding: 10px 0;
-  border-bottom: 1px solid rgba(0, 0, 0, 0.06);
-  transition: all 0.2s ease;
-  
-  &:last-child {
-    border-bottom: none;
-    padding-bottom: 0;
-  }
-  
-  &:hover {
-    background: rgba(255, 255, 255, 0.5);
-    margin: 0 -8px;
-    padding-left: 8px;
-    padding-right: 8px;
-    border-radius: 8px;
-  }
-}
-
-.detail-label {
-  font-size: 14px;
-  color: #595959;
-  min-width: 80px;
-  font-weight: 500;
-}
-
-.detail-value {
-  font-size: 14px;
-  color: #262626;
-  text-align: right;
-  flex: 1;
-  font-weight: 500;
-}
-
-.action-buttons {
-  display: flex;
-  gap: 10px;
-  margin-top: 15px;
-  padding-top: 15px;
-  border-top: 1px solid rgba(0, 0, 0, 0.06);
-}
-
-.action-btn {
-  flex: 1;
-  height: 44px;
-  border-radius: 12px;
-  font-weight: 600;
-  font-size: 14px;
-  transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
-  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
-  
-  &:hover {
-    transform: translateY(-2px);
-    box-shadow: 0 8px 20px rgba(0, 0, 0, 0.15);
-  }
-  
-  &:active {
-    transform: translateY(0);
-  }
-}
-
-.no-data {
-  padding: 80px 20px;
-  text-align: center;
-}
 </style>
\ No newline at end of file

--
Gitblit v1.9.3