WXL
4 天以前 3bd962a6d7f61239c020e2dbbeb7341e5b842dd1
pages/case/index.vue
@@ -24,7 +24,7 @@
        <text
          v-for="(type, index) in caseTypes"
          :key="index"
          :class="{ active: currentType === type.value }"
          :class="{ active: currentType == type.value }"
          @tap="selectType(type.value)"
          >{{ type.label }}</text
        >
@@ -75,12 +75,15 @@
              <text class="type">{{ caseItem.caseType }}</text>
            </view>
          </view>
          <text class="status" :class="caseItem.status.replace('ed', '')">{{
            caseItem.statusText
          }}</text>
          <text
            class="status"
            :class="caseItem.reportStatus.replace('ed', '')"
            >{{ caseItem.statusText }}</text
          >
        </view>
        <view class="detail-info">
          <!-- 基础信息保持不变 -->
          <view class="info-item">
            <text class="label">捐献编号</text>
            <text class="value">{{ caseItem.donorNo }}</text>
@@ -107,14 +110,18 @@
            <text class="label">疾病诊断</text>
            <text class="value">{{ caseItem.diagnosis }}</text>
          </view>
          <!-- 联系方式 -->
          <view class="info-item" v-if="caseItem.phone">
            <text class="label">联系电话</text>
            <text class="value">{{ caseItem.phone }}</text>
          </view>
          <view class="info-item">
            <text class="label">上报时间</text>
            <text class="value">{{ caseItem.reportTime }}</text>
          </view>
          <view class="info-item">
            <text class="label">上报人</text>
            <text class="value">{{ caseItem.reporterName }}</text>
          </view>
          <view class="info-item" v-if="caseItem.reviewTime">
            <text class="label">审核时间</text>
            <text class="value">{{ caseItem.reviewTime }}</text>
@@ -124,87 +131,98 @@
            <text class="value">{{ caseItem.reviewerName }}</text>
          </view>
        </view>
        <!-- 显示转运详情 -->
        <!-- 在 .detail-info 部分之后,.footer 部分之前添加转运信息区域 -->
        <view class="transport-section">
        <!-- 转运信息区域 - 修改判断逻辑 -->
        <view
          class="transport-section"
          v-if="caseItem.isTransport == '2' || caseItem.isTransport == 2"
        >
          <view class="transport-info">
            <text class="label">转运状态</text>
            <text
              class="transport-status"
              :class="transportStatusMap[caseItem.transportStatus].class"
              :class="getTransportStatusClass(caseItem)"
            >
              {{ transportStatusMap[caseItem.transportStatus].text }}
              {{ getTransportStatusText(caseItem) }}
            </text>
          </view>
          <!-- 显示转运详情 -->
          <view
            class="transport-details"
            v-if="caseItem.transportStatus !== 'not_transported'"
          >
          <!-- 转运详情判断逻辑修改 -->
          <view class="transport-details" v-if="hasTransport(caseItem)">
            <view class="detail-item">
              <text class="detail-label">转运单号</text>
              <text class="detail-value">{{ caseItem.transportOrderNo }}</text>
            </view>
            <view class="detail-item" v-if="caseItem.transportDetails">
              <text class="detail-label">转运车辆</text>
              <text class="detail-value">{{
                caseItem.transportDetails.vehicle
                getTransportOrderNo(caseItem)
              }}</text>
            </view>
            <view
              class="detail-item"
              v-if="
                caseItem.transportDetails &&
                caseItem.transportStatus === 'transporting'
              "
            >
              <text class="detail-label">当前位置</text>
            <view class="detail-item" v-if="getTransportStartTime(caseItem)">
              <text class="detail-label">计划转运时间</text>
              <text class="detail-value">{{
                caseItem.transportDetails.currentLocation
                getTransportStartTime(caseItem)
              }}</text>
            </view>
            <view class="detail-item" v-if="getTransportPlace(caseItem)">
              <text class="detail-label">出发地点</text>
              <text class="detail-value">{{
                getTransportPlace(caseItem)
              }}</text>
            </view>
            <view class="detail-item" v-if="getCoordinator(caseItem)">
              <text class="detail-label">协调员</text>
              <text class="detail-value">{{ getCoordinator(caseItem) }}</text>
            </view>
            <!-- 转运状态信息 -->
            <view class="detail-item" v-if="getTransportStatus(caseItem) == 2">
              <text class="detail-label">转运状态</text>
              <text class="detail-value">转运中</text>
            </view>
            <view class="detail-item" v-if="getTransportStatus(caseItem) == 3">
              <text class="detail-label">转运状态</text>
              <text class="detail-value">已完成</text>
            </view>
          </view>
          <!-- 操作按钮 -->
          <!-- 操作按钮 - 修改判断逻辑 -->
          <view class="transport-actions">
            <!-- 可创建转运单的条件:已同意 + 需转运 + 无转运单 -->
            <button
              v-if="
                caseItem.transportStatus === 'not_transported' &&
                caseItem.status === 'agreed'
              "
              v-if="canCreateTransport(caseItem)"
              class="transport-btn primary"
              @tap.stop="createTransportOrder(caseItem)"
            >
              创建转运单
            </button>
            <!-- 需转运但未同意 -->
            <button
              v-if="
                caseItem.transportStatus === 'not_transported' &&
                caseItem.status !== 'agreed'
              "
              v-if="caseItem.isTransport == '2' && !hasTransport(caseItem)"
              class="transport-btn disabled"
              disabled
            >
              需先同意案例
            </button>
            <!-- 有转运单可查看 -->
            <button
              v-if="caseItem.transportStatus !== 'not_transported'"
              v-if="hasTransport(caseItem)"
              class="transport-btn secondary"
              @tap.stop="viewTransportDetail(caseItem)"
            >
              查看转运详情
              查看转运单
            </button>
            <button
              v-if="caseItem.transportStatus === 'transporting'"
              class="transport-btn track"
              @tap.stop="trackTransport(caseItem)"
            >
              实时跟踪
            </button>
          </view>
        </view>
        <!-- 无需转运提示 -->
        <view
          class="transport-section"
          v-else-if="caseItem.reportStatus == '3'"
        >
          <view class="transport-info">
            <text class="transport-note">该案例无需转运</text>
          </view>
        </view>
        <view class="footer">
@@ -215,25 +233,17 @@
          <view class="actions">
            <button
              class="action-btn"
              v-if="caseItem.status === 'reported'"
              v-if="caseItem.reportStatus != '1'"
              @tap.stop="withdrawCase(caseItem)"
            >
              撤回
            </button>
            <button
              class="action-btn"
              v-if="
                caseItem.status === 'read' ||
                caseItem.status === 'agreed' ||
                caseItem.status === 'rejected'
              "
              @tap.stop="viewDetails(caseItem)"
            >
            <button class="action-btn" @tap.stop="viewDetails(caseItem)">
              查看详情
            </button>
            <button
              class="action-btn secondary"
              v-if="caseItem.status === 'reported'"
              v-if="caseItem.reportStatus != '1'"
              @tap.stop="editCase(caseItem)"
            >
              编辑
@@ -248,9 +258,14 @@
      </view>
      <!-- 空状态 -->
      <view class="empty-state" v-if="filteredCases.length === 0">
      <view class="empty-state" v-if="!loading && filteredCases.length == 0">
        <image src="/static/empty/no-case.png" mode="aspectFit" />
        <text>暂无器官捐献案例记录</text>
      </view>
      <!-- 加载状态 -->
      <view class="empty-state" v-if="loading">
        <text>数据加载中...</text>
      </view>
    </scroll-view>
@@ -275,261 +290,230 @@
</template>
<script setup>
import { ref, computed } from "vue";
import { ref, computed, onMounted } from "vue";
import { onLoad, onShow } from "@dcloudio/uni-app";
import { useDict } from "@/utils/dict";
// 响应式数据
const dict = ref({});
const genderOptions = ref([]);
const educationOptions = ref([]);
const loading = ref(false);
const cases = ref([]);
const total = ref(0);
const pageNum = ref(1);
const pageSize = ref(10);
const hasMore = ref(true);
const refreshing = ref(false);
// 统计数据
const stats = ref({
  totalCases: 8,
  readCases: 4,
  agreedCases: 2,
  totalCases: 0,
  readCases: 0,
  agreedCases: 0,
});
// 撤回确认弹窗相关
const showWithdrawModal = ref(false);
const currentCase = ref({});
onLoad(async (options) => {
  // 获取字典数据
  dict.value = await useDict(
    "sys_IDType",
    "sys_user_sex",
    "sys_BloodType",
    "sys_DiseaseType"
  );
  // 初始化选项数据
  initOptions();
  donatebaseinforeportList();
  donateTotal();
});
onShow(() => {
  // 这里可以添加从转运页面返回时的数据刷新逻辑
  // 例如检查本地存储中是否有需要更新的转运状态
  const transportUpdate = uni.getStorageSync("transportStatusUpdate");
  if (transportUpdate) {
    updateTransportStatus(transportUpdate.orderNo, transportUpdate.status);
    uni.removeStorageSync("transportStatusUpdate");
  }
});
// 初始化选项数据的方法
const initOptions = () => {
  genderOptions.value = dict.value.sys_IDType || [];
  educationOptions.value = dict.value.sys_user_sex || [];
};
const donatebaseinforeportList = async () => {
  const params = {
    pageNum: pageNum.value,
    pageSize: pageSize.value,
// 数据映射函数 - 修改以匹配PC端字段
const mapApiDataToCaseItem = (apiData) => {
  const statusMap = {
    1: { status: "1", statusText: "已上报" },
    2: { status: "2", statusText: "已阅读" },
    3: { status: "3", statusText: "已同意" },
    4: { status: "4", statusText: "已驳回" },
  };
  const res = await uni.$uapi.post("/system/donatebaseinforeport/list", params);
  total.value = res.total;
  console.log(res.records, "11");
  const statusInfo = statusMap[apiData.reportStatus] || statusMap["1"];
  // 转运状态映射
  const getTransportStatusClass = (caseData) => {
    if (!hasTransport(caseData)) {
      return "not-transported";
    }
    const status = getTransportStatus(caseData);
    const map = {
      1: "pending",
      2: "transporting",
      3: "completed",
      4: "cancelled",
      5: "draft",
    };
    return map[status] || "pending";
  };
  return {
    id: apiData.id || apiData.donatebaseinfoReportId,
    donorNo: apiData.caseNo,
    hospitalName: apiData.treatmenthospitalname,
    hospitalLogo: "/static/hospital/default.jpg",
    caseType: "器官捐献案例",
    donorName: apiData.name,
    idCardNo: apiData.idcardno,
    gender:
      dict.value.sys_user_sex?.find((item) => item.dictValue == apiData.sex)
        ?.dictLabel || apiData.sex,
    age: apiData.age,
    ageunit: apiData.ageunit,
    bloodType:
      dict.value.sys_BloodType?.find(
        (item) => item.dictValue == apiData.bloodType,
      )?.dictLabel || apiData.bloodType,
    diagnosis: apiData.diagnosisname,
    illnessoverview: apiData.illnessoverview,
    patientstate: apiData.patientstate,
    gcsScore: apiData.gcsScore,
    infectious: apiData.infectious,
    infectiousOther: apiData.infectiousOther,
    isTransport: apiData.isTransport,
    // 新增PC端字段
    education: apiData.education,
    occupation: apiData.occupation,
    nativeplace: apiData.nativeplace,
    nation: apiData.nation,
    nationality: apiData.nationality,
    birthday: apiData.birthday,
    idcardtype: apiData.idcardtype,
    phone: apiData.phone,
    // 医院信息
    departmentName: apiData.treatmentdeptname,
    contactPerson: apiData.coordinatorName || apiData.infoName,
    contactPhone: apiData.coordinatorNo || apiData.phone,
    // 上报信息
    reportTime: apiData.reporttime,
    reporterName: apiData.reportername || apiData.infoName,
    reviewTime: apiData.approvetime,
    reviewerName: apiData.approvername,
    // 状态和转运
    ...statusInfo,
    // 转运信息
    serviceTransport: apiData.serviceTransport || [],
    // 其他字段
    remark: apiData.remark,
  };
};
const donateTotal = async () => {
  const res = await uni.$uapi.post("/system/donatebaseinforeport/getTotal");
  console.log(res);
// 转运判断方法 - 与PC端保持一致
const hasTransport = (caseData) => {
  console.log(caseData.serviceTransport);
  return caseData.serviceTransport;
};
const canCreateTransport = (caseData) => {
  return (
    caseData.status == "3" && // 已同意
    (caseData.isTransport == "2" || caseData.isTransport == 2) && // 需要转运
    !hasTransport(caseData)
  ); // 无转运单
};
const getTransportOrderNo = (caseData) => {
  if (hasTransport(caseData)) {
    const transport = caseData.serviceTransport[0];
    return transport.reportId || transport.id || "";
  }
  return "";
};
const getTransportStartTime = (caseData) => {
  if (hasTransport(caseData)) {
    return caseData.serviceTransport[0].transportStartTime;
  }
  return "";
};
const getTransportPlace = (caseData) => {
  if (hasTransport(caseData)) {
    return caseData.serviceTransport[0].transportStartPlace;
  }
  return "";
};
const getCoordinator = (caseData) => {
  if (hasTransport(caseData)) {
    return caseData.serviceTransport[0].contactPerson;
  }
  return "";
};
const getTransportStatus = (caseData) => {
  if (hasTransport(caseData)) {
    return caseData.serviceTransport[0].transitStatus;
  }
  return null;
};
const getTransportStatusText = (caseData) => {
  if (!hasTransport(caseData)) {
    return "需转运";
  }
  const status = getTransportStatus(caseData);
  const map = {
    1: "待转运",
    2: "转运中",
    3: "已完成",
    4: "已取消",
    5: "暂存",
  };
  return map[status] || "未知";
};
// 转运状态样式
const getTransportStatusClass = (caseData) => {
  if (!hasTransport(caseData)) {
    return "not-transported";
  }
  const status = getTransportStatus(caseData);
  const map = {
    1: "pending",
    2: "transporting",
    3: "completed",
    4: "cancelled",
    5: "draft",
  };
  return map[status] || "pending";
};
// 修复编辑按钮跳转
const editCase = (caseItem) => {
  uni.navigateTo({
    url: `/pages/case/CaseDetails?id=${caseItem.id}&edit=true`,
  });
};
// 修复查看详情按钮跳转
const viewDetails = (caseItem) => {
  uni.navigateTo({
    url: `/pages/case/CaseInfo?id=${caseItem.id}`,
  });
};
// 原有的转运操作方法保持不变
const createTransportOrder = (caseItem) => {
  uni.navigateTo({
    url: `/pages/transport/create?caseId=${caseItem.id}&caseNo=${caseItem.donorNo}`,
  });
};
const viewTransportDetail = (caseItem) => {
  if (hasTransport(caseItem)) {
    const transport = caseItem.serviceTransport[0];
    uni.navigateTo({
      url: `/pages/transport/detail?orderNo=${transport.id}`,
    });
  }
};
// 筛选相关
const caseTypes = [
  { label: "全部", value: "all" },
  { label: "已上报", value: "reported" },
  { label: "已阅读", value: "read" },
  { label: "已同意", value: "agreed" },
  { label: "已驳回", value: "rejected" },
  { label: "全部", value: "" },
  { label: "已上报", value: "1" },
  { label: "已阅读", value: "2" },
  { label: "已同意", value: "3" },
  { label: "已驳回", value: "4" },
];
const currentType = ref("all");
const startDate = ref("");
const endDate = ref("");
// 案例记录数据 - 增加更多数据[1,4](@ref)
const cases = ref([
  {
    id: 1,
    donorNo: "DON20240325001",
    hospitalName: "青岛镜湖医院",
    hospitalLogo: "/static/hospital/kiang-wu.jpg",
    caseType: "器官捐献案例",
    donorName: "张三",
    idCardNo: "370203198510123456",
    gender: "男",
    age: 38,
    bloodType: "A型",
    diagnosis: "脑外伤导致脑死亡",
    reportTime: "2024-03-25 09:30",
    reporterName: "李医生",
    status: "agreed",
    statusText: "已同意",
    departmentName: "神经外科",
    contactPerson: "王护士",
    contactPhone: "13800138000",
    redCrossOrg: "青岛市红十字会",
    acquisitionOrg: "青岛市器官获取组织",
    transportStatus: "not_transported", // 转运状态:not_transported-未转运, transporting-转运中, completed-已完成
    transportOrderNo: "", // 转运单号
    transportTime: "", // 转运时间
    transportDetails: null, // 转运详情
  },
  {
    id: 2,
    donorNo: "DON20240320002",
    hospitalName: "青岛科大医院",
    hospitalLogo: "/static/hospital/must.jpg",
    caseType: "器官捐献案例",
    donorName: "李四",
    idCardNo: "370205197805207890",
    gender: "女",
    age: 45,
    bloodType: "O型",
    diagnosis: "急性心肌梗死",
    reportTime: "2024-03-20 15:00",
    reporterName: "张医生",
    status: "read",
    statusText: "已阅读",
    reviewTime: "2024-03-21 10:15",
    reviewerName: "审核专员A",
    departmentName: "心内科",
    contactPerson: "赵护士",
    contactPhone: "13900139000",
    redCrossOrg: "青岛市红十字会",
    acquisitionOrg: "青岛市器官获取组织",
    transportStatus: "transporting", // 转运中
    transportOrderNo: "TR20240321001",
    transportTime: "2024-03-21 14:30",
    transportDetails: {
      driver: "张师傅",
      vehicle: "鲁B12345",
      phone: "13800138000",
      estimatedTime: "2小时",
      currentLocation: "青岛市南区",
    },
  },
  {
    id: 3,
    donorNo: "DON20240318003",
    hospitalName: "青岛大学附属医院",
    hospitalLogo: "/static/hospital/qingda.jpg",
    caseType: "器官捐献案例",
    donorName: "王五",
    idCardNo: "370211197212153214",
    gender: "男",
    age: 51,
    bloodType: "B型",
    diagnosis: "颅内出血",
    reportTime: "2024-03-18 14:20",
    reporterName: "刘医生",
    status: "agreed",
    statusText: "已同意",
    reviewTime: "2024-03-19 09:45",
    reviewerName: "审核专员B",
    departmentName: "神经内科",
    contactPerson: "钱护士",
    contactPhone: "13600136000",
    redCrossOrg: "青岛市红十字会",
    acquisitionOrg: "青岛市器官获取组织",
    transportStatus: "completed", // 已完成
    transportOrderNo: "TR20240319001",
    transportTime: "2024-03-19 11:20",
    transportDetails: {
      driver: "李师傅",
      vehicle: "鲁B67890",
      phone: "13900139000",
      completedTime: "2024-03-19 13:45",
      distance: "156公里",
    },
  },
  {
    id: 4,
    donorNo: "DON20240315004",
    hospitalName: "青岛市立医院",
    hospitalLogo: "/static/hospital/shili.jpg",
    caseType: "器官捐献案例",
    donorName: "赵六",
    idCardNo: "370205198803274561",
    gender: "女",
    age: 36,
    bloodType: "AB型",
    diagnosis: "多器官功能衰竭",
    reportTime: "2024-03-15 16:40",
    reporterName: "陈医生",
    status: "rejected",
    statusText: "已驳回",
    reviewTime: "2024-03-16 11:20",
    reviewerName: "审核专员C",
    rejectReason: "资料不完整,需补充家属同意书",
    departmentName: "ICU",
    contactPerson: "孙护士",
    contactPhone: "13700137000",
    redCrossOrg: "青岛市红十字会",
    acquisitionOrg: "青岛市器官获取组织",
    transportStatus: "not_transported", // 转运状态:not_transported-未转运, transporting-转运中, completed-已完成
    transportOrderNo: "", // 转运单号
    transportTime: "", // 转运时间
    transportDetails: null, // 转运详情
  },
  {
    id: 5,
    donorNo: "DON20240310005",
    hospitalName: "青岛眼科医院",
    hospitalLogo: "/static/hospital/yanke.jpg",
    caseType: "角膜捐献案例",
    donorName: "孙七",
    idCardNo: "370203199205187896",
    gender: "男",
    age: 32,
    bloodType: "O型",
    diagnosis: "视网膜母细胞瘤",
    reportTime: "2024-03-10 08:15",
    reporterName: "眼科张医生",
    status: "read",
    statusText: "已阅读",
    reviewTime: "2024-03-11 14:30",
    reviewerName: "审核专员A",
    departmentName: "眼科",
    contactPerson: "周护士",
    contactPhone: "13500135000",
    redCrossOrg: "青岛市红十字会",
    acquisitionOrg: "青岛市眼库",
    transportStatus: "not_transported", // 转运状态:not_transported-未转运, transporting-转运中, completed-已完成
    transportOrderNo: "", // 转运单号
    transportTime: "", // 转运时间
    transportDetails: null, // 转运详情
  },
  {
    id: 6,
    donorNo: "DON20240305006",
    hospitalName: "青岛儿童医院",
    hospitalLogo: "/static/hospital/children.jpg",
    caseType: "器官捐献案例",
    donorName: "周八",
    idCardNo: "370211201802153248",
    gender: "女",
    age: 6,
    bloodType: "A型",
    diagnosis: "先天性心脏病",
    reportTime: "2024-03-05 11:25",
    reporterName: "儿科李医生",
    status: "reported",
    statusText: "已上报",
    departmentName: "儿科ICU",
    contactPerson: "吴护士",
    contactPhone: "13400134000",
    redCrossOrg: "青岛市红十字会",
    acquisitionOrg: "青岛市器官获取组织",
    transportStatus: "not_transported", // 转运状态:not_transported-未转运, transporting-转运中, completed-已完成
    transportOrderNo: "", // 转运单号
    transportTime: "", // 转运时间
    transportDetails: null, // 转运详情
  },
]);
// 转运状态映射
const transportStatusMap = {
  not_transported: {
@@ -541,16 +525,97 @@
  completed: { text: "已完成", color: "success", class: "completed" },
};
// 筛选记录[3](@ref)
// 生命周期
onLoad(async (options) => {
  // 获取字典数据
  dict.value = await useDict(
    "sys_IDType",
    "sys_user_sex",
    "sys_BloodType",
    "sys_DiseaseType",
  );
  // 加载数据
  await loadInitialData();
});
onShow(() => {
  const transportUpdate = uni.getStorageSync("transportStatusUpdate");
  if (transportUpdate) {
    updateTransportStatus(transportUpdate.orderNo, transportUpdate.status);
    uni.removeStorageSync("transportStatusUpdate");
  }
});
// 数据加载函数
const loadInitialData = async () => {
  loading.value = true;
  try {
    await Promise.all([donatebaseinforeportList(), donateTotal()]);
  } catch (error) {
    console.error("初始化数据失败:", error);
  } finally {
    loading.value = false;
  }
};
// 获取案例列表
const donatebaseinforeportList = async () => {
  try {
    const params = {
      pageNum: pageNum.value,
      pageSize: pageSize.value,
    };
    const res = await uni.$uapi.post(
      "/project/donatebaseinforeport/list",
      params,
    );
    console.log(res, "res");
    const mappedData = res.map((item) => mapApiDataToCaseItem(item));
    if (pageNum.value == 1) {
      cases.value = mappedData;
    } else {
      cases.value = [...cases.value, ...mappedData];
    }
    hasMore.value = pageNum.value * pageSize.value < res.total;
    total.value = res.total;
  } catch (error) {
    console.error("获取案例列表失败:", error);
    uni.showToast({
      title: "网络请求失败",
      icon: "none",
    });
  }
};
// 获取统计数据
const donateTotal = async () => {
  try {
    const res = await uni.$uapi.post("/project/donatebaseinforeport/getTotal");
    stats.value = {
      totalCases: res["1"] || 0,
      readCases: res["2"] || 0,
      agreedCases: res["3"] || 0,
    };
  } catch (error) {
    console.error("获取统计数据失败:", error);
  }
};
// 计算属性:筛选记录
const filteredCases = computed(() => {
  let result = cases.value;
  // 状态筛选
  if (currentType.value !== "all") {
    result = result.filter((caseItem) => caseItem.status === currentType.value);
    result = result.filter(
      (caseItem) => caseItem.reportStatus == currentType.value,
    );
  }
  // 日期筛选
  if (startDate.value && endDate.value) {
    result = result.filter((caseItem) => {
      const caseDate = caseItem.reportTime.split(" ")[0];
@@ -561,47 +626,11 @@
  return result;
});
// 分页相关
const hasMore = ref(true);
const refreshing = ref(false);
// 创建转运单
const createTransportOrder = (caseItem) => {
  console.log(caseItem);
  uni.navigateTo({
    url: `/pages/case/transferinfo?caseId=${caseItem.id}&donorNo=${caseItem.donorNo}`,
  });
};
// 查看转运详情
const viewTransportDetail = (caseItem) => {
  uni.navigateTo({
    url: `/pages/transport/detail?orderNo=${caseItem.transportOrderNo}`,
  });
};
// 实时跟踪
const trackTransport = (caseItem) => {
  uni.navigateTo({
    url: `/pages/transport/track?orderNo=${caseItem.transportOrderNo}`,
  });
};
// 更新转运状态(用于从转运页面返回时刷新数据)
const updateTransportStatus = (orderNo, newStatus) => {
  const caseItem = cases.value.find(
    (item) => item.transportOrderNo === orderNo
  );
  if (caseItem) {
    caseItem.transportStatus = newStatus;
  }
};
// 选择类型
// 事件处理函数
const selectType = (type) => {
  currentType.value = type;
};
// 日期选择
const onStartDateChange = (e) => {
  startDate.value = e.detail.value;
};
@@ -610,28 +639,52 @@
  endDate.value = e.detail.value;
};
// 查看详情
// 刷新和加载更多
const onRefresh = async () => {
  refreshing.value = true;
  pageNum.value = 1;
  await donatebaseinforeportList();
  setTimeout(() => {
    refreshing.value = false;
  }, 1000);
};
const onLoadMore = async () => {
  if (!hasMore.value || loading.value) return;
  pageNum.value += 1;
  await donatebaseinforeportList();
};
const trackTransport = (caseItem) => {
  uni.navigateTo({
    url: `/pages/transport/track?orderNo=${caseItem.transportOrderNo}`,
  });
};
const updateTransportStatus = (orderNo, newStatus) => {
  const caseItem = cases.value.find((item) => item.transportOrderNo == orderNo);
  if (caseItem) {
    caseItem.transportStatus = newStatus;
  }
};
const viewDetail = (caseItem) => {
  uni.navigateTo({
    url: `/pages/case/detail?id=${caseItem.id}`,
  });
};
// 撤回案例[7](@ref)
const withdrawCase = (caseItem) => {
  currentCase.value = caseItem;
  showWithdrawModal.value = true;
};
// 确认撤回
const confirmWithdraw = () => {
  const index = cases.value.findIndex(
    (item) => item.id === currentCase.value.id
    (item) => item.id == currentCase.value.id,
  );
  if (index !== -1) {
    // 从列表中移除已撤回的案例[4](@ref)
    cases.value.splice(index, 1);
    // 更新统计数据
    stats.value.totalCases -= 1;
    uni.showToast({
      title: "撤回成功",
@@ -641,46 +694,8 @@
  showWithdrawModal.value = false;
};
// 取消撤回
const cancelWithdraw = () => {
  showWithdrawModal.value = false;
};
// 查看详情
const viewDetails = (caseItem) => {
  uni.navigateTo({
    url: `/pages/case/detail?id=${caseItem.id}`,
  });
};
// 编辑案例
const editCase = (caseItem) => {
  uni.navigateTo({
    url: `/pages/case/edit?id=${caseItem.id}`,
  });
};
// 下拉刷新
const onRefresh = () => {
  refreshing.value = true;
  loadCases();
  setTimeout(() => {
    refreshing.value = false;
  }, 1000);
};
// 加载更多
const onLoadMore = () => {
  if (!hasMore.value) return;
  loadCases();
};
// 加载记录
const loadCases = () => {
  // 这里调用API加载数据
  setTimeout(() => {
    hasMore.value = false;
  }, 1000);
};
</script>