曹睿
7 天以前 aca7aa9ce32acc4c8795342f945b027d3bc9f62a
src/pages/production/index.vue
@@ -5,27 +5,50 @@
        <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" auto-line-width>
      <wd-tab :title="`待生产(${total.wait})`" class="tab_bg">
        <ProductList :api="ManageApi.getProductList" state="待完成" @ok="changeWait" />
        <ProductList
          ref="waitRef"
          :api="ManageApi.getProductList"
          state="待完成"
          @ok="changeWait"
        />
      </wd-tab>
      <wd-tab :title="`已生产(${total.already})`" class="tab_bg">
        <ProductList :api="ManageApi.getProductList" state="已完成" @ok="changeAlready" />
        <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 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 total = reactive({
  wait: 0,
@@ -40,7 +63,36 @@
  total.already = num;
};
onMounted(() => {});
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>
@@ -48,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 {