"use strict"; const common_vendor = require("../../common/vendor.js"); const common_assets = require("../../common/assets.js"); const utils_dict = require("../../utils/dict.js"); if (!Array) { const _easycom_u_loading_icon2 = common_vendor.resolveComponent("u-loading-icon"); const _easycom_u_loading_page2 = common_vendor.resolveComponent("u-loading-page"); const _easycom_u_icon2 = common_vendor.resolveComponent("u-icon"); (_easycom_u_loading_icon2 + _easycom_u_loading_page2 + _easycom_u_icon2)(); } const _easycom_u_loading_icon = () => "../../uni_modules/uview-plus/components/u-loading-icon/u-loading-icon.js"; const _easycom_u_loading_page = () => "../../uni_modules/uview-plus/components/u-loading-page/u-loading-page.js"; const _easycom_u_icon = () => "../../uni_modules/uview-plus/components/u-icon/u-icon.js"; if (!Math) { (_easycom_u_loading_icon + _easycom_u_loading_page + _easycom_u_icon)(); } const _sfc_main = { __name: "index", setup(__props) { const dict = common_vendor.ref({}); const loading = common_vendor.ref(false); const initLoading = common_vendor.ref(false); const loadingMore = common_vendor.ref(false); const cases = common_vendor.ref([]); const total = common_vendor.ref(0); const pageNum = common_vendor.ref(1); const pageSize = common_vendor.ref(10); const hasMore = common_vendor.ref(true); const refreshing = common_vendor.ref(false); const stats = common_vendor.ref({ totalCases: 0, readCases: 0, agreedCases: 0 }); const showWithdrawModal = common_vendor.ref(false); const currentCase = common_vendor.ref({}); const mapApiDataToCaseItem = (apiData) => { var _a, _b, _c, _d; const statusMap = { 1: { status: "1", statusText: "已上报" }, 2: { status: "2", statusText: "已阅读" }, 3: { status: "3", statusText: "已同意" }, 4: { status: "4", statusText: "已驳回" } }; const statusInfo = statusMap[apiData.reportStatus] || statusMap["1"]; return { id: apiData.id || apiData.donatebaseinfoReportId, donorNo: apiData.caseNo, reportStatus: apiData.reportStatus, hospitalName: apiData.treatmenthospitalname, hospitalLogo: "/static/hospital/default.jpg", caseType: "器官捐献案例", donorName: apiData.name, idCardNo: apiData.idcardno, gender: ((_b = (_a = dict.value.sys_user_sex) == null ? void 0 : _a.find((item) => item.dictValue == apiData.sex)) == null ? void 0 : _b.dictLabel) || apiData.sex, age: apiData.age, ageunit: apiData.ageunit, bloodType: ((_d = (_c = dict.value.sys_BloodType) == null ? void 0 : _c.find( (item) => item.dictValue == apiData.bloodType )) == null ? void 0 : _d.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 hasTransport = (caseData) => { return caseData.serviceTransport && caseData.serviceTransport.length > 0; }; const createNewCase = () => { common_vendor.index.navigateTo({ url: "/pages/case/CaseDetails" }); }; const canCreateTransport = (caseData) => { return (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) => { common_vendor.index.navigateTo({ url: `/pages/case/CaseDetails?id=${caseItem.id}&edit=true` }); }; const viewDetails = (caseItem) => { common_vendor.index.navigateTo({ url: `/pages/case/CaseInfo?id=${caseItem.id}` }); }; const createTransportOrder = (caseItem) => { common_vendor.index.navigateTo({ url: `/pages/case/transferinfo?caseId=${caseItem.id}&caseNo=${caseItem.donorNo}` }); }; const getStatusClass = (status) => { const map = { "1": "reported", // 已上报 "2": "read", // 已阅读 "3": "agreed", // 已同意 "4": "rejected" // 已驳回 }; return map[status] || "reported"; }; const viewTransportDetail = (caseItem) => { if (hasTransport(caseItem)) { const transport = caseItem.serviceTransport[0]; common_vendor.index.navigateTo({ url: `/pages/case/transferinfo?id=${transport.id}` }); } }; const caseTypes = [ { label: "全部", value: "all" }, { label: "已上报", value: "1" }, { label: "已阅读", value: "2" }, { label: "已同意", value: "3" }, { label: "已驳回", value: "4" } ]; const currentType = common_vendor.ref("all"); const startDate = common_vendor.ref(""); const endDate = common_vendor.ref(""); common_vendor.onLoad(async (options) => { dict.value = await utils_dict.useDict( "sys_IDType", "sys_user_sex", "sys_BloodType", "sys_DiseaseType" ); await loadInitialData(); }); common_vendor.onReachBottom(() => { if (hasMore.value && !loading.value && !loadingMore.value) { onLoadMore(); } }); common_vendor.onShow(() => { const transportUpdate = common_vendor.index.getStorageSync("transportStatusUpdate"); if (transportUpdate) { updateTransportStatus(transportUpdate.orderNo, transportUpdate.status); common_vendor.index.removeStorageSync("transportStatusUpdate"); } }); const loadInitialData = async () => { initLoading.value = true; try { await Promise.all([donatebaseinforeportList(true), donateTotal()]); } catch (error) { common_vendor.index.__f__("error", "at pages/case/index.vue:544", "初始化数据失败:", error); } finally { initLoading.value = false; } }; const donatebaseinforeportList = async (reset = false) => { if (reset) { 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 }; if (currentType.value !== "all") { params.reportStatus = currentType.value; } if (startDate.value && endDate.value) { params.startDate = startDate.value; params.endDate = endDate.value; } common_vendor.index.__f__("log", "at pages/case/index.vue:583", "请求参数:", params); const res = await common_vendor.index.$uapi.post( "/project/donatebaseinforeport/list", params ); common_vendor.index.__f__("log", "at pages/case/index.vue:590", "接口返回数据:", res); if (res.code == 200) { const data = res.data || []; const mappedData = data.map((item) => mapApiDataToCaseItem(item)); if (reset || pageNum.value == 1) { common_vendor.index.__f__("log", "at pages/case/index.vue:597", 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++; } } else { throw new Error(res.msg || "加载失败"); } } catch (error) { common_vendor.index.__f__("error", "at pages/case/index.vue:616", "获取案例列表失败:", error); common_vendor.index.showToast({ title: "网络请求失败", icon: "none" }); } finally { loading.value = false; loadingMore.value = false; } }; const donateTotal = async () => { try { const res = await common_vendor.index.$uapi.post("/project/donatebaseinforeport/getTotal"); if (res.code === 200) { stats.value = { totalCases: res.data["all"] || 0, readCases: res.data["2"] || 0, agreedCases: res.data["3"] || 0 }; } else { throw new Error(res.msg || "获取统计失败"); } } catch (error) { common_vendor.index.__f__("error", "at pages/case/index.vue:641", "获取统计数据失败:", error); } }; const filteredCases = common_vendor.computed(() => { let result = cases.value; common_vendor.index.__f__("log", "at pages/case/index.vue:648", result, "result"); return result; }); const selectType = (type) => { currentType.value = type; pageNum.value = 1; donatebaseinforeportList(true); }; const onStartDateChange = (e) => { startDate.value = e.detail.value; if (endDate.value) { pageNum.value = 1; donatebaseinforeportList(true); } }; const onEndDateChange = (e) => { endDate.value = e.detail.value; if (startDate.value) { pageNum.value = 1; donatebaseinforeportList(true); } }; const onRefresh = async () => { refreshing.value = true; pageNum.value = 1; await donatebaseinforeportList(true); await donateTotal(); setTimeout(() => { refreshing.value = false; }, 1e3); }; const onLoadMore = async () => { if (!hasMore.value || loading.value || loadingMore.value) return; await donatebaseinforeportList(); }; const updateTransportStatus = (orderNo, newStatus) => { const caseItem = cases.value.find((item) => item.transportOrderNo == orderNo); if (caseItem) { caseItem.transportStatus = newStatus; } }; const viewDetail = (caseItem) => { common_vendor.index.navigateTo({ url: `/pages/case/detail?id=${caseItem.id}` }); }; const confirmWithdraw = async () => { try { const res = await common_vendor.index.$uapi.delete(`/project/donatebaseinforeport/${currentCase.value.id}`); if (res.code === 200) { const index = cases.value.findIndex( (item) => item.id == currentCase.value.id ); if (index !== -1) { cases.value.splice(index, 1); stats.value.totalCases -= 1; } common_vendor.index.showToast({ title: "撤回成功", icon: "success" }); } else { throw new Error(res.msg || "撤回失败"); } } catch (error) { common_vendor.index.__f__("error", "at pages/case/index.vue:748", "撤回失败:", error); common_vendor.index.showToast({ title: "撤回失败,请重试", icon: "none" }); } finally { showWithdrawModal.value = false; } }; const cancelWithdraw = () => { showWithdrawModal.value = false; }; return (_ctx, _cache) => { return common_vendor.e({ a: common_vendor.t(stats.value.totalCases), b: common_vendor.t(stats.value.readCases), c: common_vendor.t(stats.value.agreedCases), d: common_vendor.f(caseTypes, (type, index, i0) => { return { a: common_vendor.t(type.label), b: index, c: currentType.value == type.value ? 1 : "", d: common_vendor.o(($event) => selectType(type.value), index) }; }), e: common_vendor.t(startDate.value || "开始日期"), f: startDate.value, g: endDate.value, h: common_vendor.o(onStartDateChange), i: common_vendor.t(endDate.value || "结束日期"), j: endDate.value, k: startDate.value, l: common_vendor.o(onEndDateChange), m: common_vendor.f(filteredCases.value, (caseItem, index, i0) => { return common_vendor.e({ a: caseItem.hospitalLogo, b: common_vendor.t(caseItem.hospitalName), c: common_vendor.t(caseItem.caseType), d: common_vendor.t(caseItem.statusText), e: common_vendor.n(getStatusClass(caseItem.reportStatus)), f: common_vendor.t(caseItem.donorNo), g: common_vendor.t(caseItem.donorName), h: common_vendor.t(caseItem.idCardNo), i: common_vendor.t(caseItem.gender), j: common_vendor.t(caseItem.age), k: common_vendor.t(caseItem.bloodType), l: common_vendor.t(caseItem.diagnosis), m: caseItem.phone }, caseItem.phone ? { n: common_vendor.t(caseItem.phone) } : {}, { o: common_vendor.t(caseItem.reportTime), p: caseItem.reviewTime }, caseItem.reviewTime ? { q: common_vendor.t(caseItem.reviewTime) } : {}, { r: caseItem.reviewerName }, caseItem.reviewerName ? { s: common_vendor.t(caseItem.reviewerName) } : {}, { t: caseItem.isTransport == "2" || caseItem.isTransport == 2 }, caseItem.isTransport == "2" || caseItem.isTransport == 2 ? common_vendor.e({ v: common_vendor.t(getTransportStatusText(caseItem)), w: common_vendor.n(getTransportStatusClass(caseItem)), x: hasTransport(caseItem) }, hasTransport(caseItem) ? common_vendor.e({ y: common_vendor.t(getTransportOrderNo(caseItem)), z: getTransportStartTime(caseItem) }, getTransportStartTime(caseItem) ? { A: common_vendor.t(getTransportStartTime(caseItem)) } : {}, { B: getTransportPlace(caseItem) }, getTransportPlace(caseItem) ? { C: common_vendor.t(getTransportPlace(caseItem)) } : {}, { D: getCoordinator(caseItem) }, getCoordinator(caseItem) ? { E: common_vendor.t(getCoordinator(caseItem)) } : {}, { F: getTransportStatus(caseItem) == 2 }, getTransportStatus(caseItem) == 2 ? {} : {}, { G: getTransportStatus(caseItem) == 3 }, getTransportStatus(caseItem) == 3 ? {} : {}) : {}, { H: canCreateTransport(caseItem) }, canCreateTransport(caseItem) ? { I: common_vendor.o(($event) => createTransportOrder(caseItem), index) } : {}, { J: hasTransport(caseItem) }, hasTransport(caseItem) ? { K: common_vendor.o(($event) => viewTransportDetail(caseItem), index) } : {}) : caseItem.reportStatus == "3" ? {} : {}, { L: caseItem.reportStatus == "3", M: common_vendor.t(caseItem.statusText), N: common_vendor.o(($event) => viewDetails(caseItem), index), O: caseItem.reportStatus == "1" || caseItem.reportStatus == "2" }, caseItem.reportStatus == "1" || caseItem.reportStatus == "2" ? { P: common_vendor.o(($event) => editCase(caseItem), index) } : {}, { Q: index, R: common_vendor.o(($event) => viewDetail(caseItem), index) }); }), n: loadingMore.value }, loadingMore.value ? { o: common_vendor.p({ text: "加载中..." }) } : {}, { p: !hasMore.value && filteredCases.value.length > 0 }, !hasMore.value && filteredCases.value.length > 0 ? {} : {}, { q: !loading.value && filteredCases.value.length == 0 }, !loading.value && filteredCases.value.length == 0 ? { r: common_assets._imports_0$7 } : {}, { s: refreshing.value, t: common_vendor.o(onRefresh), v: common_vendor.o(onLoadMore), w: showWithdrawModal.value }, showWithdrawModal.value ? { x: common_vendor.t(currentCase.value.donorNo), y: common_vendor.o(cancelWithdraw), z: common_vendor.o(confirmWithdraw) } : {}, { A: initLoading.value }, initLoading.value ? { B: common_vendor.p({ loading: true, text: "数据加载中..." }) } : {}, { C: common_vendor.p({ name: "plus", color: "#fff", size: "24" }), D: common_vendor.o(createNewCase) }); }; } }; wx.createPage(_sfc_main); //# sourceMappingURL=../../../.sourcemap/mp-weixin/pages/case/index.js.map