"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 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 }; }; 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 getGenderText = (gender) => { if (!gender) return "待转运"; if (!dict.value.sys_user_sex) return gender; const genderItem = dict.value.sys_user_sex.find( (item) => item.dictValue === gender ); return genderItem ? genderItem.dictLabel : gender; }; 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 viewDetail = (item) => { viewDetails(item); }; const viewDetails = (item) => { common_vendor.index.navigateTo({ url: `/pages/case/transferinfo?id=${item.id}` }); }; const editTransport = (item) => { common_vendor.index.navigateTo({ url: `/pages/case/transferinfo?id=${item.id}&edit=true` }); }; const startTransport = (item) => { currentTransport.value = item; modalTitle.value = "开始转运"; modalAction.value = "开始"; showActionModal.value = true; }; const completeTransport = (item) => { currentTransport.value = item; modalTitle.value = "完成转运"; modalAction.value = "完成"; showActionModal.value = true; }; const confirmAction = async () => { try { if (modalAction.value === "开始") { await updateTransportStatus(2, "开始转运"); } else if (modalAction.value === "完成") { await updateTransportStatus(3, "完成转运"); } common_vendor.index.showToast({ title: `${modalAction.value}成功`, icon: "success" }); } catch (error) { common_vendor.index.__f__("error", "at pages/case/transfer.vue:421", `${modalAction.value}失败:`, error); common_vendor.index.showToast({ title: `${modalAction.value}失败,请重试`, icon: "none" }); } finally { showActionModal.value = false; } }; const cancelAction = () => { showActionModal.value = false; }; const loadInitialData = async () => { initLoading.value = true; try { await Promise.all([loadTransports(true), loadStats()]); } catch (error) { common_vendor.index.__f__("error", "at pages/case/transfer.vue:442", "初始化数据失败:", 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 pages/case/transfer.vue:497", "请求参数:", params); const res = await common_vendor.index.$uapi.post("/project/transport/list", params); common_vendor.index.__f__("log", "at pages/case/transfer.vue:501", "接口返回数据:", 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 pages/case/transfer.vue:514", "接口返回格式不正确:", 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 pages/case/transfer.vue:537", "加载转运单列表失败:", error); common_vendor.index.showToast({ title: "网络请求失败", icon: "none" }); } finally { loading.value = false; loadingMore.value = false; } }; const loadStats = async () => { try { const res = await common_vendor.index.$uapi.post("/api/totalServiceTransportState"); if (res.data) { stats.value = { totalTransports: res.data.reduce((sum, item) => sum + item.count, 0) || 0, pendingTransports: res.data[0].count || 0, completedTransports: res.data[3].count || 0 }; } } catch (error) { common_vendor.index.__f__("error", "at pages/case/transfer.vue:561", "加载统计失败:", error); } }; const updateTransportStatus = async (newStatus, actionName) => { try { const updateData = { id: currentTransport.value.id, transitStatus: newStatus }; const res = await common_vendor.index.$uapi.post("/project/transport/edit", updateData); if (res && res.code === 200) { const index = transports.value.findIndex( (item) => item.id === currentTransport.value.id ); if (index !== -1) { transports.value[index].transitStatus = newStatus; } await loadStats(); common_vendor.index.setStorageSync("transportStatusUpdate", { orderId: currentTransport.value.id, status: newStatus }); return true; } else { throw new Error((res == null ? void 0 : res.msg) || `${actionName}失败`); } } catch (error) { common_vendor.index.__f__("error", "at pages/case/transfer.vue:598", `${actionName}失败:`, error); throw error; } }; 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(getGenderText(item.sex)), 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) => startTransport(item), index) } : {}, { o: item.transitStatus === 2 }, item.transitStatus === 2 ? { p: common_vendor.o(($event) => completeTransport(item), index) } : {}, { q: item.transitStatus != 3 }, item.transitStatus != 3 ? { r: common_vendor.o(($event) => editTransport(item), index) } : {}, { s: common_vendor.o(($event) => viewDetails(item), index), t: index, v: 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$8 } : {}, { s: refreshing.value, t: common_vendor.o(onRefresh), v: common_vendor.o(onLoadMore), w: showActionModal.value }, showActionModal.value ? { x: common_vendor.t(modalTitle.value), y: common_vendor.t(modalAction.value), z: common_vendor.t(currentTransport.value.caseNo), A: common_vendor.o(cancelAction), B: common_vendor.o(confirmAction) } : {}, { C: initLoading.value }, initLoading.value ? { D: common_vendor.p({ loading: true, text: "数据加载中..." }) } : {}, { E: common_vendor.gei(_ctx, "") }); }; } }; const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["__scopeId", "data-v-86a576d6"]]); wx.createPage(MiniProgramPage); //# sourceMappingURL=../../../.sourcemap/mp-weixin/pages/case/transfer.js.map