From aca7aa9ce32acc4c8795342f945b027d3bc9f62a Mon Sep 17 00:00:00 2001
From: 曹睿 <360930172@qq.com>
Date: 星期二, 10 六月 2025 17:37:34 +0800
Subject: [PATCH] feat: 添加时效报工,修复扫码内存泄漏

---
 src/pages/production/index.vue |  111 +++++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 79 insertions(+), 32 deletions(-)

diff --git a/src/pages/production/index.vue b/src/pages/production/index.vue
index d82c8d7..017062f 100644
--- a/src/pages/production/index.vue
+++ b/src/pages/production/index.vue
@@ -5,44 +5,94 @@
         <wd-search placeholder-left hide-cancel></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" :lineWidth="110">
-      <block v-for="(item, index) in productList" :key="index" class="tab_bg">
-        <wd-tab :title="item.label">
-          <view class="card_box">
-            <Statistics class="statistics_box" />
-            <ProductCard v-for="item in 10" @click="toDetail" />
-            <wd-loadmore custom-class="loadmore" state="loading" />
-          </view>
-        </wd-tab>
-      </block>
+    <wd-tabs v-model="tab" auto-line-width>
+      <wd-tab :title="`寰呯敓浜�(${total.wait})`" class="tab_bg">
+        <ProductList
+          ref="waitRef"
+          :api="ManageApi.getProductList"
+          state="寰呭畬鎴�"
+          @ok="changeWait"
+        />
+      </wd-tab>
+      <wd-tab :title="`宸茬敓浜�(${total.already})`" class="tab_bg">
+        <ProductList
+          ref="alreadyRef"
+          :api="ManageApi.getProductList"
+          state="宸插畬鎴�"
+          @ok="changeAlready"
+        />
+      </wd-tab>
     </wd-tabs>
+    <Scan ref="scanRef" emitName="scan" />
+    <wd-toast />
   </view>
 </template>
 
 <script lang="ts" setup>
-import ProductCard from "@/components/product_card/index.vue";
-import Statistics from "./components/Statistics.vue";
+import ManageApi from "@/api/product/manage";
+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 total = reactive({
+  wait: 0,
+  already: 0,
+});
 
-const productList = ref<any[]>([
-  {
-    label: "寰呯敓浜�(10)",
-  },
-  {
-    label: "宸茬敓浜�(20)",
-  },
-]);
-
-const toDetail = () => {
-  uni.navigateTo({
-    url: "/pages/production/detail/wireDetail",
-  });
+const changeWait = (num: number) => {
+  total.wait = num;
 };
+
+const changeAlready = (num: number) => {
+  total.already = num;
+};
+
+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();
+  console.log("鏄剧ず1");
+});
+onUnmounted(() => {
+  // 寮�鍚箍鎾洃鍚簨浠�
+  uni.$off("scan", getScanCode);
+  console.log("绂诲紑1");
+});
 </script>
 
 <style lang="scss" scoped>
@@ -50,12 +100,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 {
@@ -65,7 +115,7 @@
   border-bottom: 1px #dddddd solid;
 }
 .tab_bg {
-  background: linear-gradient(0, #ffffff 29%, #f3f9f8 100%);
+  background: #f3f9f8;
 }
 
 .icon_box {
@@ -77,10 +127,7 @@
   background: #e7f4ec99;
   border-radius: 50%;
 }
-.card_box {
-  height: calc(100vh - 160px);
-  overflow: scroll;
-}
+
 .statistics_box {
   margin: 15px;
 }

--
Gitblit v1.9.3