spring
5 小时以前 3ea1ff641e1c680a5a1727fb4034797bfe65d93e
src/pages/consumablesLogistics/receiptManagement/index.vue
@@ -1,17 +1,6 @@
<template>
  <view class="receipt-page">
    <PageHeader title="入库管理" @back="goBack" />
    <view class="tabs-wrap">
      <view
        v-for="tab in tabs"
        :key="tab.name"
        class="tab-item"
        :class="{ active: activeTab === tab.name }"
        @click="activeTab = tab.name"
      >
        <text>{{ tab.label }}</text>
      </view>
    </view>
    <view class="search-section">
      <view class="search-row">
        <view class="search-input-wrap">
@@ -58,26 +47,20 @@
</template>
<script setup>
import { reactive, ref, toRefs, watch } from "vue";
import { reactive, ref, toRefs } from "vue";
import { onReachBottom, onShow } from "@dcloudio/uni-app";
import PageHeader from "@/components/PageHeader.vue";
import request from "@/utils/request";
import { findAllQualifiedStockInRecordTypeOptions, findAllUnQualifiedStockInRecordTypeOptions } from "@/api/basicData/enum.js";
import { findAllQualifiedStockInRecordTypeOptions } from "@/api/basicData/enum.js";
const activeTab = ref("qualified");
const stockRecordTypeOptions = ref([]);
const tabs = [
  { label: "合格入库", name: "qualified", type: "0" },
  { label: "不合格入库", name: "unqualified", type: "1" },
];
const tableData = ref([]);
const total = ref(0);
const loadStatus = ref("loadmore");
const page = reactive({ current: 1, size: 4 });
const data = reactive({ searchForm: { productName: "" } });
const { searchForm } = toRefs(data);
const currentType = () => tabs.find((t) => t.name === activeTab.value)?.type || "0";
const currentType = () => "0";
function getRecordType(recordType) {
  if (recordType == null || recordType === "") return "";
@@ -85,11 +68,7 @@
}
function fetchRecordTypeOptions() {
  const api =
    currentType() === "1"
      ? findAllUnQualifiedStockInRecordTypeOptions
      : findAllQualifiedStockInRecordTypeOptions;
  api()
  findAllQualifiedStockInRecordTypeOptions()
    .then((res) => {
      const data = res.data != null ? res.data : res;
      stockRecordTypeOptions.value = Array.isArray(data) ? data : [];
@@ -142,13 +121,6 @@
  getList();
};
watch(activeTab, () => {
  page.current = 1;
  loadStatus.value = "loadmore";
  stockRecordTypeOptions.value = [];
  getList();
});
const handleQuery = () => {
  page.current = 1;
  loadStatus.value = "loadmore";
@@ -162,7 +134,7 @@
      "receiptDetailItem",
      JSON.stringify({
        item,
        type: currentType(),
        type: "0",
      })
    );
  } catch (e) {}
@@ -206,9 +178,6 @@
<style lang="scss" scoped>
.receipt-page { min-height: 100vh; background: #f5f5f5; padding-bottom: 40rpx; }
.tabs-wrap { display: flex; background: #fff; padding: 24rpx; gap: 24rpx; }
.tab-item { flex: 1; text-align: center; padding: 20rpx; border-radius: 12rpx; background: #f0f0f0; font-size: 28rpx; color: #666; }
.tab-item.active { background: #2979ff; color: #fff; }
.search-section { background: #fff; margin: 24rpx; padding: 24rpx; border-radius: 16rpx; }
.search-row { display: flex; align-items: center; }
.search-input-wrap { flex: 1; margin-right: 20rpx; min-width: 0; }
@@ -224,8 +193,22 @@
.card-body .l { color: #666; }
.card-body .r { color: #333; }
.card-body .r.highlight { color: #2979ff; font-weight: 500; }
.card-actions { display: flex; justify-content: flex-end; margin-top: 12rpx; }
.btn-delete { color: #f56c6c; font-size: 28rpx; }
.card-actions {
  display: flex;
  justify-content: center;
  align-items: center;
  margin-top: 16rpx;
  padding-top: 16rpx;
  border-top: 1rpx solid #eee;
}
.btn-delete {
  color: #f56c6c;
  font-size: 28rpx;
  padding: 12rpx 36rpx;
  border-radius: 999rpx;
  border: 1rpx solid rgba(245, 108, 108, 0.55);
  background: rgba(245, 108, 108, 0.08);
}
.no-data { text-align: center; padding: 60rpx 0; color: #999; font-size: 28rpx; }
.load-more-wrap { padding: 24rpx 24rpx 8rpx; }
</style>