From f571cf0182abd65176fb1512c5cb5ddaea49c4a3 Mon Sep 17 00:00:00 2001
From: baoshiwei <baoshiwei@shlanbao.cn>
Date: 星期二, 24 六月 2025 09:00:14 +0800
Subject: [PATCH] feat(eims): 设备状态变更记录功能

---
 eims-ui-mobile/src/pages/inspect/insp-st.vue |  115 +++++++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 91 insertions(+), 24 deletions(-)

diff --git a/eims-ui-mobile/src/pages/inspect/insp-st.vue b/eims-ui-mobile/src/pages/inspect/insp-st.vue
index 2499379..928022b 100644
--- a/eims-ui-mobile/src/pages/inspect/insp-st.vue
+++ b/eims-ui-mobile/src/pages/inspect/insp-st.vue
@@ -1,6 +1,7 @@
 <route lang="json5" type="page">
 {
   layout: 'default',
+  needLogin: true,
   style: {
     navigationBarTitleText: '鐐规姹囨��',
   },
@@ -10,14 +11,16 @@
 <template>
   <z-paging ref="paging" v-model="dataList" @query="queryList" show-refresher-update-time>
     <template #top>
-      <wd-drop-menu>
-        <wd-drop-menu-item v-model="viewMode" :options="viewModeList" @change="handleViewMode" />
-        <wd-drop-menu-item v-model="equName" :options="equList" @change="handleEquName" />
-      </wd-drop-menu>
-      <wd-divider></wd-divider>
+      <!-- 澧炲姞涓�涓悳绱㈡爮 -->
+      <wd-search v-model="searchValue" @search="handleSearch">
+      </wd-search>
+      <wd-tabs v-model="activeTab" @change="handleTabChange">
+        <wd-tab title="寰呯偣妫�"></wd-tab>
+        <wd-tab title="寰呯‘璁�"></wd-tab>
+        <wd-tab title="宸插畬鎴�"></wd-tab>
+      </wd-tabs>
     </template>
     <view class="bg-base">
-      <view class="w-full h-[24rpx]"></view>
       <wd-card type="rectangle" v-for="(item, index) in dataList" :key="item.id">
         <template #title>
           <view class="flex justify-between">
@@ -36,25 +39,29 @@
             </view>
           </view>
         </template>
-        <view class="flex h-[100rpx]" items-center>
+        <view class="flex h-[200rpx]" items-center>
           <image class="slot-img text-center" src="/static/images/camera.png" />
           <view class="flex-1">
-            <view class="text-color-gray text-xs mt-1 flex">
-              <text class="mr-3">鐐规鎬绘暟: {{ item.recordCount }}</text>
+            <view class="text-color-gray text-sm mt-1 flex">
+              <text class="mr-3">鎬绘暟: {{ item.recordCount }}</text>
               |
               <text class="mx-3">宸茬偣妫�: {{ item.checkCount }}</text>
               |
               <text class="ml-3">鏈偣妫�: {{ item.unCheckCount }}</text>
             </view>
-            <view class="text-color-gray text-xs mt-2 flex">
+            <view class="text-color-gray text-sm mt-2 flex">
               <text class="mr-3">姝e父: {{ item.normalNum }}</text>
               |
               <text class="mx-3">寮傚父: {{ item.abNormalNum }}</text>
             </view>
-            <view class="text-color-gray text-xs mt-2 flex">
+            <view class="text-color-gray text-sm mt-2 flex">
               <text>鐘舵�侊細</text>
-              <template v-if="item.recordCount === item.checkCount">
-                <wd-icon class="icon-color-success" name="check-outline" size="40rpx"></wd-icon>
+              <template v-if="item.status === '1'">
+                <wd-icon class="icon-color-warning" name="check-outline" size="34rpx"></wd-icon>
+                <text class="ml-1">寰呯‘璁�</text>
+              </template>
+              <template v-else-if="item.status === '2'">
+                <wd-icon class="icon-color-success" name="check-outline" size="34rpx"></wd-icon>
                 <text class="ml-1">宸插畬鎴�</text>
               </template>
               <template v-else>
@@ -62,6 +69,7 @@
                 <text class="ml-1">杩涜涓�</text>
               </template>
             </view>
+            <view class="text-color-gray text-sm mt-2 flex">鍒涘缓鏃堕棿: {{ item.createTime }}</view>
           </view>
           <wd-button size="small" icon="edit-outline" @click.stop="itemClick(item)">鏄庣粏</wd-button>
         </view>
@@ -71,35 +79,89 @@
 </template>
 
 <script setup lang="ts">
-import { ref } from 'vue'
 import { getInspStList } from '@/service/inspect'
-import { onShow } from '@dcloudio/uni-app'
+import dayjs from 'dayjs'
+import { useUserStore, useAccessStore, useSystemConfigStore } from '@/store'
+import { isLeader, isLineOrRepair, isOperator } from "@/utils/RoleUtils";
+// 鏍囩椤电浉鍏�
+const activeTab = ref(0) // 榛樿閫変腑绗竴涓爣绛鹃〉锛堝緟鐐规锛�
 
+// 鍘熸湁鍙橀噺
 const viewMode = ref<string>('Day')
 const equName = ref<string>('鎵�鏈夎澶�')
+const filterDate = ref<string>('1')
+const status = ref<string>('0') // 榛樿涓哄緟鐐规鐘舵��
+const searchValue = ref<string>('')
 
 const viewModeList = ref<Record<string, any>[]>([
   { label: '鏃ヨ鍥�', value: 'Day' },
   { label: '鏈堣鍥�', value: 'Month' },
 ])
+const filterDateList = ref<Record<string, any>[]>([
+  { label: '鎵�鏈夋暟鎹�', value: '0' },
+  { label: '褰撳ぉ(鏈�)鏁版嵁', value: '1' },
+])
+
 const equList = ref<Record<string, any>[]>([{ label: '鎵�鏈夎澶�', value: '鎵�鏈夎澶�' }])
+const userStore = useUserStore()
+// 鏍囩椤靛垏鎹㈠鐞嗗嚱鏁�
+function handleTabChange({ index }) {
+  // 鏍规嵁鏍囩椤电储寮曡缃搴旂殑鐘舵�佸��
+  if (index === 0) {
+    // 寰呯偣妫�
+    status.value = '0'
+  } else if (index === 1) {
+    // 寰呯‘璁�
+    status.value = '1'
+  } else if (index === 2) {
+    // 宸插畬鎴�
+    status.value = '2'
+  }
+  // 閲嶆柊鍔犺浇鏁版嵁
+  reloadData()
+}
+
+// 鍘熸湁鍑芥暟
 function handleViewMode({ value }) {
   reloadData()
 }
 function handleEquName({ value }) {
   console.log(value)
 }
+function handleFilterDate({ value }) {
+  reloadData()
+}
 
 const paging = ref(null)
 const dataList = ref([])
 
 const queryList = (pageNum?: number, pageSize?: number) => {
-  // 杩欓噷鐨刾ageNo鍜宲ageSize浼氳嚜鍔ㄨ绠楀ソ锛岀洿鎺ヤ紶缁欐湇鍔″櫒鍗冲彲
-  // 杩欓噷鐨勮姹傚彧鏄紨绀猴紝璇锋浛鎹㈡垚鑷繁鐨勯」鐩殑缃戠粶璇锋眰锛屽苟鍦ㄧ綉缁滆姹傚洖璋冧腑閫氳繃paging.value.complete(璇锋眰鍥炴潵鐨勬暟缁�)灏嗚姹傜粨鏋滀紶缁檢-paging
-  getInspStList({ pageNum, pageSize, viewMode: viewMode.value })
+  const params: any = {
+    pageNum,
+    pageSize,
+    viewMode: viewMode.value,
+    status: status.value, // 娣诲姞鐘舵�佺瓫閫�
+    params: {
+      searchValue: searchValue.value,
+    },
+  }
+  if (filterDate.value === '1') {
+    params.planTime = dayjs().format('YYYY-MM-DD')
+  } else {
+    delete params.planTime
+  }
+
+  console.log('queryList::', isLineOrRepair(), isOperator(), userStore.userInfo)
+  if (isLineOrRepair() || isOperator()) {
+    params.updateBy = userStore.userInfo.userId
+  } else if (isLeader()) {
+    delete params.updateBy
+  }
+  console.log('params::', params)
+  getInspStList(params)
     .then((res: any) => {
       // 璇峰嬁鍦ㄧ綉缁滆姹傚洖璋冧腑缁檇ataList璧嬪�硷紒锛佸彧闇�瑕佽皟鐢╟omplete灏卞彲浠ヤ簡
-      paging.value.complete(res.rows)
+      paging.value.completeByTotal(res.rows, res.total)
     })
     .catch((res) => {
       // 濡傛灉璇锋眰澶辫触鍐檖aging.value.complete(false)锛屼細鑷姩灞曠ず閿欒椤甸潰
@@ -110,21 +172,26 @@
 }
 
 function itemClick(item) {
-  const inspCode = `${item.equId}_${item.planTime}_${viewMode.value}`
+  // const inspCode = `${item.equId}_${item.planTime}_${viewMode.value}`
   uni.navigateTo({
-    url: `/pages/inspect/insp-record?id=${item.id}&inspCode=${inspCode}&specialNote=${item.specialNote ?? ''}&equName=${item.equName ?? ''}&assetNo=${item.assetNo ?? ''}&planTimeStr=${item.planTimeStr ?? ''}`,
+    // url: `/pages/inspect/insp-record?id=${item.id}&createTime=${item.createTime}&inspCode=${inspCode}&specialNote=${item.specialNote ?? ''}&equName=${item.equName ?? ''}&assetNo=${item.assetNo ?? ''}&planTimeStr=${item.planTimeStr ?? ''}`,
+    url: `/pages/inspect/insp-record?id=${item.id}&viewMode=${viewMode.value}`,
   })
+}
+
+function handleSearch() {
+  console.log('handleSearch')
+  paging.value.reload()
 }
 
 function reloadData() {
   paging.value.reload()
 }
 onLoad(() => {
-  queryList()
   uni.$on('insp-st-refresh', reloadData)
 })
 onUnload(() => {
-  uni.$off('insp-st-refres', reloadData)
+  uni.$off('insp-st-refresh', reloadData)
 })
 </script>
 
@@ -142,7 +209,7 @@
   height: 40rpx;
 }
 .text-mini {
-  font-size: 22rpx;
+  font-size: 24rpx;
 }
 
 .menu-indicator {

--
Gitblit v1.9.3