From 46d143d1d6fe8f286399f4d027c9a86adf7cd7fc Mon Sep 17 00:00:00 2001
From: baoshiwei <baoshiwei@shlanbao.cn>
Date: 星期三, 09 七月 2025 08:50:01 +0800
Subject: [PATCH] feat(inspection,maintenance): - 实现保养工单批量确认功能 - 在点检记录确认时增加时间限制,距离上次更新时间两小时内不允许确认

---
 eims-ui-mobile/src/pages/inspect/insp-record.vue |  100 +++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 79 insertions(+), 21 deletions(-)

diff --git a/eims-ui-mobile/src/pages/inspect/insp-record.vue b/eims-ui-mobile/src/pages/inspect/insp-record.vue
index 42d7841..aa5832a 100644
--- a/eims-ui-mobile/src/pages/inspect/insp-record.vue
+++ b/eims-ui-mobile/src/pages/inspect/insp-record.vue
@@ -11,6 +11,7 @@
     v-model="dataList"
     :auto="false"
     @query="queryList"
+    refresher-only
     show-refresher-update-time
   >
     <template #top>
@@ -24,7 +25,7 @@
         safeAreaInsetTop
       >
         <template #right>
-          <text v-if="isOperatorOrRepair()" class="text-white">鎻愪氦</text>
+          <text v-if="inspSt.status === '0'" class="text-white">鎻愪氦</text>
         </template>
       </wd-navbar>
       <wd-card type="rectangle">
@@ -61,9 +62,13 @@
             </view>
             <view class="text-color-gray text-sm mt-2 flex">
               <text>鐘舵�侊細</text>
-              <template v-if="dataCount > 0 && dataCount === checkCount">
+              <template v-if="inspSt.status === '1'">
                 <wd-icon class="icon-color-success" name="check-outline" size="34rpx"></wd-icon>
                 <text class="ml-1">宸插畬鎴�</text>
+              </template>
+              <template v-else-if="inspSt.status === '2'">
+                <wd-icon class="icon-color-warning" name="check-outline" size="34rpx"></wd-icon>
+                <text class="ml-1">宸茬‘璁�</text>
               </template>
               <template v-else>
                 <wd-icon class="icon-color-base" name="detection" size="40rpx"></wd-icon>
@@ -120,7 +125,7 @@
             </view>
           </template>
 
-          <view v-if="item.showDesc" class="mt-2">
+          <view v-if="item.inspResult === '2'" class="mt-2">
             <wd-input
               v-model="item.inspDesc"
               placeholder="璇疯緭鍏ュ紓甯告弿杩�"
@@ -142,6 +147,7 @@
       <!--      </wd-cell>-->
       <view class="w-full h-[1px] bg-base"></view>
       <wd-input
+        v-if="inspSt.status !== '0'"
         label="杩愯鏃堕棿"
         label-width="200rpx"
         clearable
@@ -151,6 +157,7 @@
         size="large"
       />
       <wd-input
+        v-if="inspSt.status !== '0'"
         label="鏁呴殰鏃堕棿"
         label-width="200rpx"
         clearable
@@ -172,8 +179,9 @@
         size="large"
       />
       <!-- 鏂板鎻愪氦鎸夐挳 -->
-      <view class="flex justify-center mt-4">
-        <wd-button type="primary" block size="large" @click="handleClickRight">鎻愪氦</wd-button>
+      <view class="flex justify-around">
+        <wd-button type="primary" style="margin: 20px" block  v-if="inspSt.status === '0' || inspSt.status === '1'" @click="handleClickRight">鎻愪氦</wd-button>
+<!--        <wd-button type="success" block size="large" v-if="isLeader() && inspSt.status === '1'" @click="handleComplete">纭瀹屾垚</wd-button>-->
       </view>
     </view>
   </z-paging>
@@ -181,7 +189,7 @@
 
 <script setup lang="ts">
 import { useUserStore, useAccessStore, useSystemConfigStore } from '@/store'
-import { isLeader, isOperatorOrRepair } from '@/utils/RoleUtils'
+import { isLeader, isLineOrRepair } from '@/utils/RoleUtils'
 import {
   getInspStRecordList,
   getInspSt,
@@ -217,6 +225,8 @@
   specialNote: string
   runTimes: number
   faultTimes: number
+  verifyUser?: number | string
+  verifyTime?: string
 }
 
 const dataChange = ref(false)
@@ -237,26 +247,24 @@
   status: '',
   inspUser: '',
   specialNote: '',
-  runTimes: 0,
-  faultTimes: 0,
+  runTimes: undefined,
+  faultTimes: undefined,
 })
 
 const paging = ref(null)
 const dataList = ref([])
 
-const queryList = (pageNum?: number, pageSize?: number) => {
+const queryList = () => {
   // 杩欓噷鐨刾ageNo鍜宲ageSize浼氳嚜鍔ㄨ绠楀ソ锛岀洿鎺ヤ紶缁欐湇鍔″櫒鍗冲彲
   // 杩欓噷鐨勮姹傚彧鏄紨绀猴紝璇锋浛鎹㈡垚鑷繁鐨勯」鐩殑缃戠粶璇锋眰锛屽苟鍦ㄧ綉缁滆姹傚洖璋冧腑閫氳繃paging.value.complete(璇锋眰鍥炴潵鐨勬暟缁�)灏嗚姹傜粨鏋滀紶缁檢-paging
   const params: QueryParams = {
-    pageNum,
-    pageSize,
     inspCode: inspSt.inspCode,
   }
 
   getInspStRecordList(params)
     .then((res: any) => {
       // 璇峰嬁鍦ㄧ綉缁滆姹傚洖璋冧腑缁檇ataList璧嬪�硷紒锛佸彧闇�瑕佽皟鐢╟omplete灏卞彲浠ヤ簡
-      paging.value.completeByTotal(res.rows, res.total)
+      paging.value.complete(res.rows, res.total)
     })
     .catch((res) => {
       // 濡傛灉璇锋眰澶辫触鍐檖aging.value.complete(false)锛屼細鑷姩灞曠ず閿欒椤甸潰
@@ -273,13 +281,6 @@
   // 淇敼鏃堕棿鏍煎紡涓� YYYY-MM-DD HH:mm:ss
   const now = new Date()
   item.inspTime = `${now.getFullYear()}-${String(now.getMonth() + 1).padStart(2, '0')}-${String(now.getDate()).padStart(2, '0')} ${String(now.getHours()).padStart(2, '0')}:${String(now.getMinutes()).padStart(2, '0')}:${String(now.getSeconds()).padStart(2, '0')}`
-
-  if (item.inspResult === '2') {
-    item.showDesc = true
-  } else {
-    item.showDesc = false
-    item.inspDesc = ''
-  }
 }
 
 const goBack = () => {
@@ -287,8 +288,11 @@
 }
 
 function handleClickRight() {
-  if (isOperatorOrRepair()) {
+
+  if (inspSt.status === '0') {
     handleConfirm()
+  } else if (inspSt.status === '1') {
+    handleComplete()
   }
 }
 
@@ -356,7 +360,12 @@
 }
 function updateInspSt(resolve: any) {
   // 鏇存柊鐐规姹囨��
-  inspSt.status = '1'
+  if (dataCount.value === selectedItems.value.length) {
+    inspSt.status = '1'
+  } else {
+    inspSt.status = '0'
+  }
+
   updateInspectSt(inspSt)
     .then((res: any) => {
       toast.success('鎿嶄綔鎴愬姛')
@@ -371,6 +380,55 @@
 }
 
 /**
+ * 纭瀹屾垚鎸夐挳鐐瑰嚮浜嬩欢
+ */
+function handleComplete() {
+  console.log('handleComplete', inspSt)
+  if (!inspSt.runTimes || !inspSt.faultTimes) {
+    message.alert('璇峰~鍐欒繍琛屾鏁板拰鏁呴殰娆℃暟!')
+    return false
+  }
+  // 濡傛灉褰撳墠鏃堕棿璺濅笂娆℃柊鏃堕棿涓ゅ皬鏃朵互鍐呭垯涓嶅厑璁哥‘璁�
+  console.log('inspSt.updateTime', inspSt.updateTime)
+  console.log('new Date().getTime()', new Date().getTime())
+  console.log('inspSt.updateTime', new Date(inspSt.updateTime).getTime())
+  console.log('new Date().getTime() - new Date(inspSt.updateTime).getTime()', new Date().getTime() - new Date(inspSt.updateTime).getTime())
+  console.log("2 * 60 * 60 * 1000", 2 * 60 * 60 * 1000)
+  console.log('new Date().getTime() - new Date(inspSt.updateTime).getTime() < 2 * 60 * 60 * 1000', new Date().getTime() - new Date(inspSt.updateTime).getTime() < 2 * 60 * 60 * 1000)
+  if (
+    new Date().getTime() - new Date(inspSt.updateTime).getTime() < 2 * 60 * 60 * 1000
+  ) {
+    console.log("new Date().getTime() - new Date(inspSt.updateTime).getTime() < 2 * 60 * 60 * 1000",new Date().getTime() - new Date(inspSt.updateTime).getTime() < 2 * 60 * 60 * 1000)
+    message.alert('鐐规涓ゅ皬鏃朵互鍐呬笉鍏佽纭!')
+    return false
+  }
+  const now = new Date();
+  const data: any = Object.assign(
+    {},
+    {
+      id: inspSt.id,
+      runTimes: inspSt.runTimes,
+      faultTimes: inspSt.faultTimes,
+      status: '2',
+      verifyUser: userStore?.userInfo?.userId,
+      verifyTime: `${now.getFullYear()}-${String(now.getMonth() + 1).padStart(2, '0')}-${String(now.getDate()).padStart(2, '0')} ${String(now.getHours()).padStart(2, '0')}:${String(now.getMinutes()).padStart(2, '0')}:${String(now.getSeconds()).padStart(2, '0')}`
+    },
+  )
+  updateInspectSt(data)
+    .then((res: any) => {
+      if (res?.code === 200) {
+        uni.$emit('insp-st-refresh')
+        goBack()
+        toast.success('鎿嶄綔鎴愬姛')
+      }
+    })
+    .catch((res) => {
+      console.error(res)
+      toast.error('鎿嶄綔澶辫触')
+    })
+}
+
+/**
  * 鐐规璁板綍鏉$洰鐐瑰嚮浜嬩欢
  * @param item
  */

--
Gitblit v1.9.3