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