| | |
| | | <text class="value">{{ caseItem.reviewerName }}</text> |
| | | </view> |
| | | </view> |
| | | <!-- 显示转运详情 --> |
| | | <!-- 在 .detail-info 部分之后,.footer 部分之前添加转运信息区域 --> |
| | | |
| | | <!-- 转运信息区域 --> |
| | | <view class="transport-section"> |
| | | <view class="transport-info"> |
| | | <text class="label">转运状态</text> |
| | |
| | | </text> |
| | | </view> |
| | | |
| | | <!-- 显示转运详情 --> |
| | | <!-- 显示转运详情:只要有转运单号就显示 --> |
| | | <view |
| | | class="transport-details" |
| | | v-if="caseItem.transportStatus !== 'not_transported'" |
| | | v-if="caseItem.transportOrderNo && caseItem.transportOrderNo !== ''" |
| | | > |
| | | <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"> |
| | | |
| | | <view class="detail-item" v-if="caseItem.transportTime"> |
| | | <text class="detail-label">计划转运时间</text> |
| | | <text class="detail-value">{{ caseItem.transportTime }}</text> |
| | | </view> |
| | | |
| | | <view class="detail-item" v-if="caseItem.transportDetails?.vehicle"> |
| | | <text class="detail-label">转运车辆</text> |
| | | <text class="detail-value">{{ |
| | | caseItem.transportDetails.vehicle |
| | | }}</text> |
| | | </view> |
| | | |
| | | <view class="detail-item" v-if="caseItem.transportDetails?.driver"> |
| | | <text class="detail-label">驾驶员</text> |
| | | <text class="detail-value">{{ |
| | | caseItem.transportDetails.driver |
| | | }}</text> |
| | | </view> |
| | | |
| | | <view class="detail-item" v-if="caseItem.transportDetails?.phone"> |
| | | <text class="detail-label">联系电话</text> |
| | | <text class="detail-value">{{ |
| | | caseItem.transportDetails.phone |
| | | }}</text> |
| | | </view> |
| | | |
| | | <!-- 转运中才显示的动态信息 --> |
| | | <view |
| | | class="detail-item" |
| | | v-if=" |
| | | caseItem.transportDetails && |
| | | caseItem.transportStatus === 'transporting' |
| | | caseItem.transportStatus === 'transporting' && |
| | | caseItem.transportDetails?.currentLocation |
| | | " |
| | | > |
| | | <text class="detail-label">当前位置</text> |
| | | <text class="detail-value">{{ |
| | | caseItem.transportDetails.currentLocation |
| | | }}</text> |
| | | </view> |
| | | |
| | | <view |
| | | class="detail-item" |
| | | v-if=" |
| | | caseItem.transportStatus === 'transporting' && |
| | | caseItem.transportDetails?.estimatedTime |
| | | " |
| | | > |
| | | <text class="detail-label">预计到达</text> |
| | | <text class="detail-value">{{ |
| | | caseItem.transportDetails.estimatedTime |
| | | }}</text> |
| | | </view> |
| | | |
| | | <!-- 完成后显示的信息 --> |
| | | <view |
| | | class="detail-item" |
| | | v-if=" |
| | | caseItem.transportStatus === 'completed' && |
| | | caseItem.transportDetails?.completedTime |
| | | " |
| | | > |
| | | <text class="detail-label">完成时间</text> |
| | | <text class="detail-value">{{ |
| | | caseItem.transportDetails.completedTime |
| | | }}</text> |
| | | </view> |
| | | </view> |
| | |
| | | <view class="transport-actions"> |
| | | <button |
| | | v-if=" |
| | | caseItem.transportStatus === 'not_transported' && |
| | | !caseItem.transportOrderNo && |
| | | caseItem.status === 'agreed' |
| | | " |
| | | class="transport-btn primary" |
| | |
| | | 需先同意案例 |
| | | </button> |
| | | |
| | | <!-- 只要有转运单号就可以查看详情 --> |
| | | <button |
| | | v-if="caseItem.transportStatus !== 'not_transported'" |
| | | v-if=" |
| | | caseItem.transportOrderNo && caseItem.transportOrderNo !== '' |
| | | " |
| | | class="transport-btn secondary" |
| | | @tap.stop="viewTransportDetail(caseItem)" |
| | | > |
| | |
| | | </button> |
| | | </view> |
| | | </view> |
| | | |
| | | <view class="footer"> |
| | | <view class="action-info"> |
| | | <text class="label">案例状态</text> |
| | |
| | | </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> |
| | | |
| | |
| | | </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, |
| | | }; |
| | | const res = await uni.$uapi.post("/system/donatebaseinforeport/list", params); |
| | | total.value = res.total; |
| | | console.log(res.records, "11"); |
| | | }; |
| | | const donateTotal = async () => { |
| | | const res = await uni.$uapi.post("/system/donatebaseinforeport/getTotal"); |
| | | console.log(res); |
| | | }; |
| | | // 筛选相关 |
| | | const caseTypes = [ |
| | | { label: "全部", value: "all" }, |
| | |
| | | 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: { |
| | |
| | | completed: { text: "已完成", color: "success", class: "completed" }, |
| | | }; |
| | | |
| | | // 筛选记录[3](@ref) |
| | | // 数据映射函数 |
| | | // 数据映射函数 |
| | | const mapApiDataToCaseItem = (apiData) => { |
| | | const statusMap = { |
| | | 1: { status: "reported", statusText: "已上报" }, |
| | | 2: { status: "read", statusText: "已阅读" }, |
| | | 3: { status: "agreed", statusText: "已同意" }, |
| | | 4: { status: "rejected", statusText: "已驳回" }, |
| | | }; |
| | | |
| | | const transportStatusMap = { |
| | | 1: "not_transported", |
| | | 2: "transporting", |
| | | 3: "completed", |
| | | 4: "not_transported", |
| | | 5: "not_transported", |
| | | }; |
| | | |
| | | const statusInfo = statusMap[apiData.reportStatus] || statusMap["1"]; |
| | | |
| | | // 处理转运信息 - 更加健壮的处理 |
| | | let transportDetails = null; |
| | | let transportStatus = "not_transported"; |
| | | let transportOrderNo = ""; |
| | | let transportTime = ""; |
| | | |
| | | // 优先从 serviceTransport 获取转运信息 |
| | | if ( |
| | | apiData.serviceTransport && |
| | | Array.isArray(apiData.serviceTransport) && |
| | | apiData.serviceTransport.length > 0 |
| | | ) { |
| | | const transport = apiData.serviceTransport[0]; |
| | | transportDetails = { |
| | | driver: transport.driver || "", |
| | | vehicle: transport.vehicle || "", |
| | | phone: transport.driverPhone || "", |
| | | currentLocation: transport.transportStartPlace || "", |
| | | estimatedTime: transport.estimatedTime || "", |
| | | completedTime: transport.completedTime || "", |
| | | }; |
| | | transportStatus = |
| | | transportStatusMap[transport.transitStatus] || "not_transported"; |
| | | transportOrderNo = transport.id || ""; |
| | | transportTime = transport.transportStartTime || ""; |
| | | } |
| | | |
| | | // 如果直接有转运信息,也进行处理 |
| | | if (apiData.transportOrderNo) { |
| | | transportOrderNo = apiData.transportOrderNo; |
| | | } |
| | | if (apiData.transportStartTime) { |
| | | transportTime = apiData.transportStartTime; |
| | | } |
| | | if (apiData.transitStatus) { |
| | | transportStatus = |
| | | transportStatusMap[apiData.transitStatus] || "not_transported"; |
| | | } |
| | | |
| | | 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, |
| | | bloodType: |
| | | dict.value.sys_BloodType?.find( |
| | | (item) => item.dictValue === apiData.bloodType |
| | | )?.dictLabel || apiData.bloodType, |
| | | diagnosis: apiData.diagnosisname, |
| | | reportTime: apiData.reporttime, |
| | | reporterName: apiData.reportername, |
| | | reviewTime: apiData.reviewTime, |
| | | reviewerName: apiData.reviewerName, |
| | | departmentName: apiData.treatmentdeptname, |
| | | contactPerson: apiData.userName || apiData.contactPerson, |
| | | contactPhone: apiData.phone, |
| | | ...statusInfo, |
| | | transportStatus: transportStatus, |
| | | transportOrderNo: transportOrderNo, |
| | | transportTime: transportTime, |
| | | transportDetails: transportDetails, |
| | | }; |
| | | }; |
| | | |
| | | // 生命周期 |
| | | 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); |
| | | } |
| | | |
| | | // 日期筛选 |
| | | if (startDate.value && endDate.value) { |
| | | result = result.filter((caseItem) => { |
| | | const caseDate = caseItem.reportTime.split(" ")[0]; |
| | |
| | | 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; |
| | | }; |
| | |
| | | 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 createTransportOrder = (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 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 |
| | | ); |
| | | if (index !== -1) { |
| | | // 从列表中移除已撤回的案例[4](@ref) |
| | | cases.value.splice(index, 1); |
| | | // 更新统计数据 |
| | | stats.value.totalCases -= 1; |
| | | uni.showToast({ |
| | | title: "撤回成功", |
| | |
| | | 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> |
| | | |