From 85832c85a73adfbef540b57777791cfaa2776727 Mon Sep 17 00:00:00 2001
From: spring <2396852758@qq.com>
Date: 星期四, 20 十一月 2025 10:27:23 +0800
Subject: [PATCH] fix: 优化绞线报工

---
 src/pages/production/index.vue |  109 +++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 102 insertions(+), 7 deletions(-)

diff --git a/src/pages/production/index.vue b/src/pages/production/index.vue
index 16dc0c3..73d3f94 100644
--- a/src/pages/production/index.vue
+++ b/src/pages/production/index.vue
@@ -2,31 +2,67 @@
   <view>
     <wd-row>
       <wd-col :span="21">
-        <wd-search placeholder-left hide-cancel></wd-search>
+        <wd-search
+          v-model="searchKeyword"
+          placeholder="璇疯緭鍏�"
+          placeholder-left
+          hide-cancel
+          @search="handleSearch"
+          @clear="handleClear"
+        ></wd-search>
       </wd-col>
       <wd-col :span="3">
-        <view class="scan_box">
+        <view class="scan_box" @click="openScan">
           <wd-icon name="scan" size="24px" color="#0D867F"></wd-icon>
         </view>
       </wd-col>
     </wd-row>
     <wd-tabs v-model="tab" auto-line-width>
       <wd-tab :title="`寰呯敓浜�(${total.wait})`" class="tab_bg">
-        <ProductList :api="ManageApi.getProductList" state="寰呭畬鎴�" @ok="changeWait" />
+        <ProductList
+          ref="waitRef"
+          :key="`wait-${searchKey}`"
+          :api="ManageApi.getProductList"
+          state="寰呭畬鎴�"
+          :search="searchKeyword"
+          @ok="changeWait"
+        />
       </wd-tab>
       <wd-tab :title="`宸茬敓浜�(${total.already})`" class="tab_bg">
-        <ProductList :api="ManageApi.getProductList" state="宸插畬鎴�" @ok="changeAlready" />
+        <ProductList
+          ref="alreadyRef"
+          :key="`already-${searchKey}`"
+          :api="ManageApi.getProductList"
+          state="宸插畬鎴�"
+          :search="searchKeyword"
+          @ok="changeAlready"
+        />
       </wd-tab>
     </wd-tabs>
+    <Scan ref="scanRef" emitName="scan" />
+    <wd-toast />
   </view>
 </template>
 
 <script lang="ts" setup>
 import ManageApi from "@/api/product/manage";
-import { onMounted, ref } from "vue";
+import { ref } from "vue";
 import ProductList from "./list/index.vue";
+import Scan from "@/components/scan/index.vue";
+import { useUserStore } from "@/store/modules/user";
+import reportApi from "@/api/work/report";
+import { useToast } from "wot-design-uni";
 
+const scanRef = ref();
+const userStore = useUserStore();
+const userInfo: any = computed(() => userStore.userInfo);
+const toast = useToast();
+
+const waitRef = ref();
+const alreadyRef = ref();
 const tab = ref<number>(0);
+const searchKeyword = ref("");
+const searchKey = ref(0);
 const total = reactive({
   wait: 0,
   already: 0,
@@ -40,7 +76,66 @@
   total.already = num;
 };
 
-onMounted(() => {});
+// 鑾峰彇缁熻鏁版嵁
+const getStatistics = async () => {
+  try {
+    const params: any = {};
+    if (searchKeyword.value) {
+      params.search = searchKeyword.value;
+    }
+    const { code, data } = await ManageApi.getProductStatistics(params);
+    if (code === 200 && data) {
+      total.wait = data["寰呭畬鎴�"] || 0;
+      total.already = data["宸插畬鎴�"] || 0;
+    }
+  } catch (error) {
+    console.error("鑾峰彇缁熻鏁版嵁澶辫触:", error);
+  }
+};
+
+const handleSearch = () => {
+  searchKey.value++;
+  // 鎼滅储鏃舵洿鏂扮粺璁℃暟鎹�
+  getStatistics();
+};
+
+const handleClear = () => {
+  searchKeyword.value = "";
+  handleSearch();
+};
+
+const openScan = () => {
+  scanRef.value.triggerScan();
+};
+
+const getScanCode = async () => {
+  console.log("鐢熶骇绠$悊鎵爜鍥炶皟");
+  const { code } = await reportApi.sendWorkTime({
+    userName: userInfo.value.userName,
+  });
+  if (code == 200) {
+    toast.success("鎵爜鎴愬姛");
+  }
+};
+
+// 纭繚鍏堢Щ闄ゅ啀娣诲姞鐩戝惉
+const setupScanListener = () => {
+  uni.$off("scan", getScanCode); // 鍏堢Щ闄ゆ棫鐨�
+  uni.$on("scan", getScanCode); // 鍐嶆坊鍔犳柊鐨�
+};
+
+onMounted(() => {
+  // 寮�鍚箍鎾洃鍚簨浠�
+  setupScanListener();
+  // 鑾峰彇缁熻鏁版嵁
+  getStatistics();
+  console.log("鏄剧ず1");
+});
+onUnmounted(() => {
+  // 寮�鍚箍鎾洃鍚簨浠�
+  uni.$off("scan", getScanCode);
+  console.log("绂诲紑1");
+});
 </script>
 
 <style lang="scss" scoped>
@@ -48,12 +143,12 @@
   border-radius: unset;
 }
 .scan_box {
-  padding: 6px;
   display: flex;
   align-items: center;
   justify-content: center;
   width: 38px;
   height: 38px;
+  padding: 6px;
   background: #fff;
 }
 ::v-deep .wd-tabs__line {

--
Gitblit v1.9.3