"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"); (_easycom_u_loading_icon2 + _easycom_u_loading_page2)(); } 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"; if (!Math) { (_easycom_u_loading_icon + _easycom_u_loading_page)(); } const _sfc_main = { __name: "transfer", setup(__props) { const dict = common_vendor.ref({}); const stats = common_vendor.ref({ totalTransports: 0, pendingTransports: 0, completedTransports: 0 }); const transports = common_vendor.ref([]); const loading = common_vendor.ref(false); const initLoading = common_vendor.ref(false); const loadingMore = common_vendor.ref(false); const refreshing = common_vendor.ref(false); const hasMore = common_vendor.ref(true); const pageNum = common_vendor.ref(1); const pageSize = common_vendor.ref(10); const showActionModal = common_vendor.ref(false); const currentTransport = common_vendor.ref({}); const modalTitle = common_vendor.ref(""); const modalAction = common_vendor.ref(""); const modalTargetStatus = common_vendor.ref(null); const transportTypes = [ { label: "全部", value: "" }, { label: "待转运", value: 1 }, { label: "转运中", value: 2 }, { label: "已完成", value: 3 }, { label: "已取消", value: 4 }, { label: "暂存", value: 5 } ]; const currentType = common_vendor.ref(""); const startDate = common_vendor.ref(""); const endDate = common_vendor.ref(""); common_vendor.onLoad(async (options) => { dict.value = await utils_dict.useDict("sys_user_sex"); await loadInitialData(); }); common_vendor.onReachBottom(() => { if (hasMore.value && !loading.value && !loadingMore.value) { onLoadMore(); } }); common_vendor.onShow(() => { const update = common_vendor.index.getStorageSync("transportStatusUpdate"); if (update) { handleStatusUpdate(update); common_vendor.index.removeStorageSync("transportStatusUpdate"); } }); const mapApiDataToTransportItem = (apiData) => { return { id: apiData.id, reportId: apiData.reportId, caseNo: apiData.caseNo, patName: apiData.patName, sex: apiData.sex, age: apiData.age, diagnosisname: apiData.diagnosisname, treatmentHospitalName: apiData.treatmentHospitalName, transportStartTime: apiData.transportStartTime, contactPerson: apiData.contactPerson, createTime: apiData.createTime, transitStatus: apiData.transitStatus, // 医护人员信息 doctor: apiData.doctor, nurse: apiData.nurse, driver: apiData.driver, // 其他字段 transportStartPlace: apiData.transportStartPlace, remark: apiData.remark, annexfilesList: apiData.annexfilesList || [] }; }; const filteredTransports = common_vendor.computed(() => { let result = transports.value; if (currentType.value !== "") { result = result.filter((item) => item.transitStatus == currentType.value); } return result; }); const getStatusClass = (status) => { const map = { 1: "pending", // 待转运 2: "transporting", // 转运中 3: "completed", // 已完成 4: "cancelled", // 已取消 5: "cancelled" // 暂存 }; return map[status] || "pending"; }; const getStatusText = (status) => { const map = { 1: "待出发", 2: "转运中", 3: "已完成", 4: "已取消", 5: "暂存" }; return map[status] || "待转运"; }; const formatTime = (timeStr) => { if (!timeStr) return "未设置"; return timeStr.replace("T", " ").substring(0, 16); }; const selectType = (type) => { currentType.value = type; pageNum.value = 1; loadTransports(true); }; const onStartDateChange = (e) => { startDate.value = e.detail.value; if (endDate.value) { pageNum.value = 1; loadTransports(true); } }; const onEndDateChange = (e) => { endDate.value = e.detail.value; if (startDate.value) { pageNum.value = 1; loadTransports(true); } }; const handleStartTransport = (item) => { currentTransport.value = { ...item }; modalTitle.value = "开始转运"; modalAction.value = "开始"; modalTargetStatus.value = 2; showActionModal.value = true; }; const handleCompleteTransport = (item) => { currentTransport.value = { ...item }; modalTitle.value = "完成转运"; modalAction.value = "完成"; modalTargetStatus.value = 3; showActionModal.value = true; }; const handleCancelTransport = (item) => { currentTransport.value = { ...item }; modalTitle.value = "取消转运"; modalAction.value = "取消"; modalTargetStatus.value = 4; showActionModal.value = true; }; const handleRecoverTransport = (item) => { currentTransport.value = { ...item }; modalTitle.value = "恢复转运"; modalAction.value = "恢复"; modalTargetStatus.value = 2; showActionModal.value = true; }; const cancelAction = () => { showActionModal.value = false; }; const confirmAction = async () => { try { const requestData = { ...currentTransport.value, transitStatus: modalTargetStatus.value }; if (requestData.annexfilesList && requestData.annexfilesList.length > 0) { requestData.annexfilesList.forEach((item) => { item.id = null; }); } const res = await common_vendor.index.$uapi.post("/project/transport/edit", requestData); if (res && res.code == 200) { common_vendor.index.showToast({ title: `${modalAction.value}转运成功`, icon: "success" }); if (modalTargetStatus.value == 3) { try { const caseRes = await common_vendor.index.$uapi.get( `/project/donatebaseinforeport/getInfo/${requestData.reportId}` ); if (caseRes && caseRes.data) { const caseData = caseRes.data; caseData.isDonate = 1; const editRes = await common_vendor.index.$uapi.post( "/project/donatebaseinforeport/edit", caseData ); if (editRes && editRes.code == 200) { common_vendor.index.showToast({ title: "对应上报案例已进入正式案例流程", icon: "success" }); } } } catch (caseError) { common_vendor.index.__f__("error", "at pagesSub/case/transfer.vue:478", "更新案例状态失败:", caseError); common_vendor.index.showToast({ title: "案例状态更新失败,请联系管理员", icon: "none" }); } } const index = transports.value.findIndex( (item) => item.id == currentTransport.value.id ); if (index !== -1) { transports.value[index].transitStatus = modalTargetStatus.value; } await loadStats(); showActionModal.value = false; } else { common_vendor.index.showToast({ title: (res == null ? void 0 : res.msg) || `${modalAction.value}转运失败`, icon: "none" }); } } catch (error) { common_vendor.index.__f__("error", "at pagesSub/case/transfer.vue:507", `${modalAction.value}转运失败:`, error); common_vendor.index.showToast({ title: "操作失败,请稍后重试", icon: "none" }); } }; const viewDetail = (item) => { viewDetails(item); }; const viewDetails = (item) => { common_vendor.index.navigateTo({ url: `/pagesSub/case/transferinfo?id=${item.id}` }); }; const loadInitialData = async () => { initLoading.value = true; try { await Promise.all([loadTransports(true), loadStats()]); } catch (error) { common_vendor.index.__f__("error", "at pagesSub/case/transfer.vue:547", "初始化数据失败:", error); } finally { initLoading.value = false; } }; const onRefresh = async () => { refreshing.value = true; pageNum.value = 1; await loadTransports(true); await loadStats(); setTimeout(() => { refreshing.value = false; }, 1e3); }; const onLoadMore = async () => { if (!hasMore.value || loading.value || loadingMore.value) return; await loadTransports(); }; const loadTransports = 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 !== "") { params.transitStatus = currentType.value; } if (startDate.value && endDate.value) { params.startDate = startDate.value; params.endDate = endDate.value; } common_vendor.index.__f__("log", "at pagesSub/case/transfer.vue:602", "请求参数:", params); const res = await common_vendor.index.$uapi.post("/project/transport/list", params); common_vendor.index.__f__("log", "at pagesSub/case/transfer.vue:606", "接口返回数据:", res); if (res && res.code == 200) { let data = []; if (res.rows && Array.isArray(res.rows)) { data = res.rows; } else if (res.data && Array.isArray(res.data)) { data = res.data; } else if (Array.isArray(res)) { data = res; } else { common_vendor.index.__f__("error", "at pagesSub/case/transfer.vue:619", "接口返回格式不正确:", res); throw new Error("接口返回格式不正确"); } const mappedData = data.map((item) => mapApiDataToTransportItem(item)); if (reset || pageNum.value == 1) { transports.value = mappedData; } else { transports.value = [...transports.value, ...mappedData]; } hasMore.value = data.length >= pageSize.value; if (data.length > 0) { pageNum.value++; } } else { throw new Error((res == null ? void 0 : res.msg) || "加载失败"); } } catch (error) { common_vendor.index.__f__("error", "at pagesSub/case/transfer.vue:642", "加载转运单列表失败:", error); common_vendor.index.showToast({ title: "网络请求失败", icon: "none" }); } finally { loading.value = false; loadingMore.value = false; } }; const loadStats = async () => { var _a, _b; try { const res = await common_vendor.index.$uapi.post( "/project/transport/totalServiceTransportState" ); common_vendor.index.__f__("log", "at pagesSub/case/transfer.vue:659", 222); common_vendor.index.__f__("log", "at pagesSub/case/transfer.vue:660", res, "11"); if (res.data && Array.isArray(res.data)) { const totalTransports = res.data.reduce((sum, item) => sum + item.count, 0) || 0; const pendingTransports = ((_a = res.data.find((item) => item.transit_status == 1)) == null ? void 0 : _a.count) || 0; const completedTransports = ((_b = res.data.find((item) => item.transit_status == 3)) == null ? void 0 : _b.count) || 0; stats.value = { totalTransports, pendingTransports, completedTransports }; } else { stats.value = { totalTransports: 0, pendingTransports: 0, completedTransports: 0 }; common_vendor.index.__f__("error", "at pagesSub/case/transfer.vue:683", "统计数据格式异常:", res.data); } } catch (error) { common_vendor.index.__f__("error", "at pagesSub/case/transfer.vue:686", "加载统计失败:", error); stats.value = { totalTransports: 0, pendingTransports: 0, completedTransports: 0 }; } }; const handleStatusUpdate = (update) => { const index = transports.value.findIndex( (item) => item.id == update.orderId ); if (index !== -1) { transports.value[index].transitStatus = update.status; } }; return (_ctx, _cache) => { return common_vendor.e({ a: common_vendor.t(stats.value.totalTransports), b: common_vendor.t(stats.value.pendingTransports), c: common_vendor.t(stats.value.completedTransports), d: common_vendor.f(transportTypes, (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(filteredTransports.value, (item, index, i0) => { return common_vendor.e({ a: common_vendor.t(item.caseNo || item.reportId), b: common_vendor.t(item.patName), c: common_vendor.t(item.sex == 1 ? "男" : "女"), d: common_vendor.t(item.age), e: common_vendor.t(getStatusText(item.transitStatus)), f: common_vendor.n(getStatusClass(item.transitStatus)), g: common_vendor.t(item.diagnosisname || "未填写"), h: common_vendor.t(item.treatmentHospitalName || "未填写"), i: common_vendor.t(formatTime(item.transportStartTime)), j: common_vendor.t(item.contactPerson || "未指定"), k: common_vendor.t(formatTime(item.createTime)), l: common_vendor.t(getStatusText(item.transitStatus)), m: item.transitStatus == 1 }, item.transitStatus == 1 ? { n: common_vendor.o(($event) => handleStartTransport(item), index) } : {}, { o: item.transitStatus == 2 }, item.transitStatus == 2 ? { p: common_vendor.o(($event) => handleCompleteTransport(item), index) } : {}, { q: item.transitStatus == 2 }, item.transitStatus == 2 ? { r: common_vendor.o(($event) => handleCancelTransport(item), index) } : {}, { s: item.transitStatus == 4 }, item.transitStatus == 4 ? { t: common_vendor.o(($event) => handleRecoverTransport(item), index) } : {}, { v: common_vendor.o(($event) => viewDetails(item), index), w: index, x: common_vendor.o(($event) => viewDetail(item), index) }); }), n: loadingMore.value }, loadingMore.value ? { o: common_vendor.p({ text: "加载中..." }) } : {}, { p: !hasMore.value && filteredTransports.value.length > 0 }, !hasMore.value && filteredTransports.value.length > 0 ? {} : {}, { q: !loading.value && filteredTransports.value.length == 0 }, !loading.value && filteredTransports.value.length == 0 ? { r: common_assets._imports_0$3 } : {}, { s: refreshing.value, t: common_vendor.o(onRefresh), v: common_vendor.o(onLoadMore), w: showActionModal.value }, showActionModal.value ? common_vendor.e({ x: common_vendor.t(modalTitle.value), y: common_vendor.t(modalAction.value), z: common_vendor.t(currentTransport.value.caseNo), A: currentTransport.value.patName }, currentTransport.value.patName ? { B: common_vendor.t(currentTransport.value.patName), C: common_vendor.t(getStatusText(currentTransport.value.transitStatus)) } : {}, { D: common_vendor.o(cancelAction), E: common_vendor.t(modalAction.value), F: common_vendor.o(confirmAction), G: common_vendor.o(() => { }), H: common_vendor.o(cancelAction) }) : {}, { I: initLoading.value }, initLoading.value ? { J: common_vendor.p({ loading: true, text: "数据加载中..." }) } : {}, { K: common_vendor.gei(_ctx, "") }); }; } }; const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["__scopeId", "data-v-e32a2a70"]]); wx.createPage(MiniProgramPage); //# sourceMappingURL=../../../.sourcemap/mp-weixin/pagesSub/case/transfer.js.map