WXL
昨天 c80bc467a41daa6cbae4e5515a300a8ca98cfeaa
pagesSub/case/index.vue
@@ -75,18 +75,16 @@
              <text class="type">{{ caseItem.caseType }}</text>
            </view>
          </view>
          <text
            class="status"
            :class="getStatusClass(caseItem.reportStatus)"
            >{{ caseItem.statusText }}</text
          >
          <text class="status" :class="getStatusClass(caseItem.reportStatus)">{{
            caseItem.statusText
          }}</text>
        </view>
        <view class="detail-info">
          <!-- 基础信息保持不变 -->
          <view class="info-item">
            <text class="label">捐献编号</text>
            <text class="value">{{ caseItem.donorNo }}</text>
            <text class="value">{{ caseItem.caseNo }}</text>
          </view>
          <view class="info-item">
            <text class="label">捐献者姓名</text>
@@ -234,7 +232,9 @@
            </button>
            <button
              class="action-btn secondary"
              v-if="caseItem.reportStatus == '1' || caseItem.reportStatus == '2'"
              v-if="
                caseItem.reportStatus == '1' || caseItem.reportStatus == '2'
              "
              @tap.stop="editCase(caseItem)"
            >
              编辑
@@ -277,12 +277,12 @@
        </view>
      </view>
    </view>
    <!-- 加载状态 -->
    <u-loading-page v-if="initLoading" :loading="true" text="数据加载中..." />
  </view>
   <view class="float-button" @tap="createNewCase">
    <u-icon name="plus" color="#fff" size="24"></u-icon>
  <view class="float-button" @tap="createNewCase">
    <up-icon name="plus" color="#fff" size="24"></up-icon>
  </view>
</template>
@@ -327,6 +327,7 @@
  return {
    id: apiData.id || apiData.donatebaseinfoReportId,
    donorNo: apiData.caseNo,
    caseNo:apiData.caseNo,
    reportStatus: apiData.reportStatus,
    hospitalName: apiData.treatmenthospitalname,
    hospitalLogo: "/static/hospital/default.jpg",
@@ -334,14 +335,13 @@
    donorName: apiData.name,
    idCardNo: apiData.idcardno,
    gender:
      dict.value.sys_user_sex?.find((item) => item.dictValue == apiData.sex)
        ?.dictLabel || apiData.sex,
      dict.value.sys_user_sex?.find((item) => item.value == apiData.sex)
        ?.label || apiData.sex,
    age: apiData.age,
    ageunit: apiData.ageunit,
    bloodType:
      dict.value.sys_BloodType?.find(
        (item) => item.dictValue == apiData.bloodType,
      )?.dictLabel || apiData.bloodType,
      dict.value.sys_BloodType?.find((item) => item.value == apiData.bloodType)
        ?.label || apiData.bloodType,
    diagnosis: apiData.diagnosisname,
    illnessoverview: apiData.illnessoverview,
    patientstate: apiData.patientstate,
@@ -381,7 +381,7 @@
};
const createNewCase = () => {
  uni.navigateTo({
    url: '/pagesSub/case/CaseDetails'
    url: "/pagesSub/case/CaseDetails",
  });
};
const canCreateTransport = (caseData) => {
@@ -479,13 +479,13 @@
};
const getStatusClass = (status) => {
  const map = {
    '1': 'reported',     // 已上报
    '2': 'read',         // 已阅读
    '3': 'agreed',       // 已同意
    '4': 'rejected'      // 已驳回
    1: "reported", // 已上报
    2: "read", // 已阅读
    3: "agreed", // 已同意
    4: "rejected", // 已驳回
  };
  return map[status] || 'reported';
}
  return map[status] || "reported";
};
const viewTransportDetail = (caseItem) => {
  if (hasTransport(caseItem)) {
    const transport = caseItem.serviceTransport[0];
@@ -527,8 +527,9 @@
  }
});
onShow(() => {
onShow(async () => {
  const transportUpdate = uni.getStorageSync("transportStatusUpdate");
  await loadInitialData();
  if (transportUpdate) {
    updateTransportStatus(transportUpdate.orderNo, transportUpdate.status);
    uni.removeStorageSync("transportStatusUpdate");
@@ -553,58 +554,58 @@
    pageNum.value = 1;
    hasMore.value = true;
  }
  if (loading.value || loadingMore.value || !hasMore.value) return;
  if (reset) {
    loading.value = true;
  } else {
    loadingMore.value = true;
  }
  try {
    const params = {
      pageNum: pageNum.value,
      pageSize: pageSize.value,
    };
    // 筛选条件 - 如果选择了"全部",不传reportStatus参数
    if (currentType.value !== "all") {
      params.reportStatus = currentType.value;
    }
    // 时间筛选条件
    if (startDate.value && endDate.value) {
      // 将时间格式转换为接口需要的格式
      params.startDate = startDate.value;
      params.endDate = endDate.value;
    }
    console.log("请求参数:", params);
    const res = await uni.$uapi.post(
      "/project/donatebaseinforeport/list",
      params,
    );
    console.log("接口返回数据:", res);
    if (res.code == 200) {
      const data =res.data || [];
      const data = res.data || [];
      const mappedData = data.map((item) => mapApiDataToCaseItem(item));
      if (reset || pageNum.value == 1) {
        console.log(mappedData,'mappedData');
        console.log(mappedData, "mappedData");
        cases.value = mappedData;
      } else {
        cases.value = [...cases.value, ...mappedData];
      }
      // 判断是否还有更多数据
      hasMore.value = data.length >= pageSize.value;
      total.value = res.total || 0;
      // 如果有数据加载成功,增加页码
      if (data.length > 0) {
        pageNum.value++;
@@ -645,15 +646,15 @@
// 计算属性:筛选记录 - 现在只做前端状态筛选
const filteredCases = computed(() => {
  let result = cases.value;
  console.log(result,'result');
  console.log(result, "result");
  // 只做前端状态筛选,时间筛选已经通过接口实现
  // if (currentType.value !== "all") {
  //   result = result.filter(
  //     (caseItem) => caseItem.reportStatus == currentType.value,
  //   );
  // }
  return result;
});
@@ -725,18 +726,20 @@
const confirmWithdraw = async () => {
  try {
    const res = await uni.$uapi.delete(`/project/donatebaseinforeport/${currentCase.value.id}`);
    const res = await uni.$uapi.delete(
      `/project/donatebaseinforeport/${currentCase.value.id}`,
    );
    if (res.code === 200) {
      // 从列表中移除
      const index = cases.value.findIndex(
        (item) => item.id == currentCase.value.id
        (item) => item.id == currentCase.value.id,
      );
      if (index !== -1) {
        cases.value.splice(index, 1);
        stats.value.totalCases -= 1;
      }
      uni.showToast({
        title: "撤回成功",
        icon: "success",
@@ -1133,14 +1136,15 @@
      }
    }
  }
  .load-more, .no-more {
  .load-more,
  .no-more {
    text-align: center;
    padding: 40rpx 0;
    color: $text-secondary;
    font-size: 28rpx;
  }
  .empty-state {
    padding: 120rpx 0;
    text-align: center;
@@ -1240,10 +1244,10 @@
  box-shadow: 0 8rpx 20rpx rgba($primary-color, 0.3);
  z-index: 100;
  transition: all 0.3s ease;
  &:active {
    opacity: 0.8;
    transform: scale(0.95);
  }
}
</style>
</style>