"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
|