"use strict";
|
const common_vendor = require("../../common/vendor.js");
|
const stores_user = require("../../stores/user.js");
|
const stores_useHomeButton = require("../../stores/useHomeButton.js");
|
if (!Array) {
|
const _easycom_up_icon2 = common_vendor.resolveComponent("up-icon");
|
const _easycom_u_radio2 = common_vendor.resolveComponent("u-radio");
|
const _easycom_u_radio_group2 = common_vendor.resolveComponent("u-radio-group");
|
const _easycom_u__textarea2 = common_vendor.resolveComponent("u--textarea");
|
const _easycom_u_icon2 = common_vendor.resolveComponent("u-icon");
|
const _easycom_u_popup2 = common_vendor.resolveComponent("u-popup");
|
const _easycom_uni_icons2 = common_vendor.resolveComponent("uni-icons");
|
const _easycom_u_modal2 = common_vendor.resolveComponent("u-modal");
|
(_easycom_up_icon2 + _easycom_u_radio2 + _easycom_u_radio_group2 + _easycom_u__textarea2 + _easycom_u_icon2 + _easycom_u_popup2 + _easycom_uni_icons2 + _easycom_u_modal2)();
|
}
|
const _easycom_up_icon = () => "../../uni_modules/uview-plus/components/u-icon/u-icon.js";
|
const _easycom_u_radio = () => "../../uni_modules/uview-plus/components/u-radio/u-radio.js";
|
const _easycom_u_radio_group = () => "../../uni_modules/uview-plus/components/u-radio-group/u-radio-group.js";
|
const _easycom_u__textarea = () => "../../uni_modules/uview-plus/components/u--textarea/u--textarea.js";
|
const _easycom_u_icon = () => "../../uni_modules/uview-plus/components/u-icon/u-icon.js";
|
const _easycom_u_popup = () => "../../uni_modules/uview-plus/components/u-popup/u-popup.js";
|
const _easycom_uni_icons = () => "../../node-modules/@dcloudio/uni-ui/lib/uni-icons/uni-icons.js";
|
const _easycom_u_modal = () => "../../uni_modules/uview-plus/components/u-modal/u-modal.js";
|
if (!Math) {
|
(_easycom_up_icon + _easycom_u_radio + _easycom_u_radio_group + _easycom_u__textarea + _easycom_u_icon + _easycom_u_popup + _easycom_uni_icons + _easycom_u_modal)();
|
}
|
const canvasWidth = 650;
|
const canvasHeight = 300;
|
const _sfc_main = {
|
__name: "ethicalInfo",
|
setup(__props) {
|
const { showHomeButton, checkAutoLogin, goHome } = stores_useHomeButton.useHomeButton();
|
const userStore = stores_user.useUserStore();
|
common_vendor.ref({});
|
const caseInfo = common_vendor.ref({
|
hospitalNo: "",
|
donorName: "",
|
gender: "",
|
age: "",
|
diagnosis: "",
|
receiveStatus: "0",
|
endtime: ""
|
});
|
const id = common_vendor.ref(null);
|
const fcid = common_vendor.ref(null);
|
const materials = common_vendor.ref([]);
|
const form = common_vendor.ref({
|
expertconclusion: "",
|
// 专家结论
|
expertopinion: ""
|
// 专家意见
|
});
|
const expertInfo = common_vendor.ref({
|
name: "",
|
title: ""
|
});
|
const showSubmitModal = common_vendor.ref(false);
|
const modalTitle = common_vendor.ref("确认提交");
|
const modalContent = common_vendor.ref("确定要提交审查意见吗?提交后将无法修改。");
|
const currentTime = common_vendor.computed(() => {
|
return (/* @__PURE__ */ new Date()).toLocaleString("zh-CN", {
|
year: "numeric",
|
month: "2-digit",
|
day: "2-digit",
|
hour: "2-digit",
|
minute: "2-digit"
|
});
|
});
|
const conclusionOptions = common_vendor.ref([
|
{ label: "同意", value: "1" },
|
// 对应receiveStatus 5-完成
|
{ label: "驳回", value: "2" }
|
// 对应receiveStatus 6-驳回
|
]);
|
const showSignaturePanel = common_vendor.ref(false);
|
const signatureData = common_vendor.reactive({
|
signatureUrl: "",
|
signatureTime: "",
|
fileName: "",
|
serverData: null
|
});
|
let ctx = null;
|
let isDrawing = false;
|
let lastX = 0;
|
let lastY = 0;
|
let strokeHistory = [];
|
const tempSignatureData = common_vendor.ref("");
|
const canUndo = common_vendor.computed(() => strokeHistory.length > 0);
|
const hasSignature = common_vendor.computed(() => tempSignatureData.value !== "");
|
const uploadConfig = common_vendor.reactive({
|
uploadUrl: "/api/common/upload",
|
extraParams: {
|
caseNo: "",
|
expertId: "",
|
expertName: "",
|
type: "ethics_review_signature",
|
bizType: "expert_review"
|
}
|
});
|
const showSaveBtn = common_vendor.ref(true);
|
const showSubmitBtn = common_vendor.ref(true);
|
const submitBtnText = common_vendor.ref("提交审查");
|
const getStatusText = (status) => {
|
const statusMap = {
|
0: "待接收",
|
1: "未接收",
|
2: "已接收",
|
3: "超时",
|
4: "中止",
|
5: "完成",
|
6: "驳回"
|
};
|
return statusMap[status] || "未知状态";
|
};
|
const getStatusClass = (status) => {
|
const classMap = {
|
0: "pending",
|
1: "pending",
|
2: "pending",
|
3: "submitted",
|
4: "submitted",
|
5: "success",
|
6: "error"
|
};
|
return classMap[status] || "pending";
|
};
|
const isTimeout = common_vendor.computed(() => {
|
return caseInfo.value.receiveStatus == "3";
|
});
|
const isReadonly = common_vendor.computed(() => {
|
return isTimeout.value;
|
});
|
common_vendor.computed(() => {
|
if (isReadonly.value)
|
return false;
|
return form.value.expertconclusion !== "" && form.value.expertopinion.trim().length > 0 && signatureData.signatureUrl !== "" && signatureData.signatureUrl.startsWith("http");
|
});
|
common_vendor.onLoad(async (options) => {
|
checkAutoLogin(options);
|
id.value = options.id;
|
fcid.value = options.fcid;
|
if (fcid.value) {
|
await loadCaseData(fcid.value);
|
}
|
});
|
common_vendor.onShow(() => {
|
const userInfo = common_vendor.index.getStorageSync("userInfo");
|
if (userInfo) {
|
expertInfo.value.name = userInfo.nickName || userInfo.userName || "";
|
}
|
});
|
const loadCaseData = async (id2) => {
|
try {
|
common_vendor.index.showLoading({ title: "加载中..." });
|
const params = {
|
fcid: id2,
|
pageNum: 1,
|
pageSize: 1
|
};
|
const res = await common_vendor.index.$uapi.get(
|
`/project/ethicalreviewopinions/listnew`,
|
params
|
);
|
if (res.code == 200 && res.rows && res.rows.length > 0) {
|
const data = res.rows[0];
|
common_vendor.index.__f__("log", "at pages/ethicalReview/ethicalInfo.vue:474", "加载的审查数据:", data);
|
caseInfo.value = {
|
...caseInfo.value,
|
inpatientno: data.inpatientno,
|
name: data.name,
|
sex: data.sex,
|
age: data.age,
|
ageunit: data.ageunit,
|
expertType: data.expertType,
|
diagnosisname: data.diagnosisname,
|
receiveStatus: data.receiveStatus || "0",
|
endtime: data.endtime || "",
|
caseNo: data.caseNo || ""
|
};
|
common_vendor.index.__f__("log", "at pages/ethicalReview/ethicalInfo.vue:490", data.receiveStatus, "data.receiveStatus");
|
common_vendor.index.__f__("log", "at pages/ethicalReview/ethicalInfo.vue:492", caseInfo.value.receiveStatus, "caseInfo.value");
|
if (data.expertconclusion) {
|
form.value.expertconclusion = data.expertconclusion.toString();
|
}
|
if (data.expertopinion) {
|
form.value.expertopinion = data.expertopinion;
|
}
|
if (data.expertname) {
|
expertInfo.value.name = data.expertname;
|
} else {
|
const userInfo = common_vendor.index.getStorageSync("userInfo");
|
if (userInfo) {
|
expertInfo.value.name = userInfo.nickName || userInfo.userName || "";
|
}
|
}
|
if (data.sigin) {
|
if (data.sigin.startsWith("http")) {
|
signatureData.signatureUrl = data.sigin;
|
} else {
|
signatureData.signatureUrl = `/api${data.sigin.startsWith("/") ? "" : "/"}${data.sigin}`;
|
}
|
signatureData.signatureTime = data.conclusiontime || "";
|
}
|
if (data.filePatch) {
|
parseAnnexFiles(data.filePatch);
|
}
|
checkTimeoutStatus(data);
|
updateButtonStatus(data.receiveStatus);
|
uploadConfig.extraParams.caseNo = data.caseNo || "";
|
uploadConfig.extraParams.expertName = expertInfo.value.name;
|
} else {
|
common_vendor.index.showToast({
|
title: res.msg || "未找到审查数据",
|
icon: "none"
|
});
|
}
|
} catch (error) {
|
if (error.message == "未登录") {
|
return;
|
}
|
common_vendor.index.showToast({ title: "加载失败", icon: "none" });
|
} finally {
|
common_vendor.index.hideLoading();
|
}
|
};
|
const checkTimeoutStatus = (data) => {
|
if (data.receiveStatus == "3") {
|
return;
|
}
|
};
|
const parseAnnexFiles = (filePatch) => {
|
if (!filePatch)
|
return;
|
try {
|
let fileList = [];
|
if (filePatch.startsWith("[") && filePatch.endsWith("]")) {
|
const cleanJson = filePatch.replace(/\\"/g, '"');
|
fileList = JSON.parse(cleanJson);
|
} else if (filePatch.includes("fileName")) {
|
fileList = JSON.parse(filePatch);
|
} else {
|
const oldFileList = filePatch.split(";").filter((item) => item.trim());
|
fileList = oldFileList.map((file) => ({
|
fileName: file.split("/").pop() || `附件`,
|
path: file,
|
fileUrl: file
|
}));
|
}
|
materials.value = fileList.map((file, index) => {
|
const fileName = file.fileName || `附件${index + 1}`;
|
const fileUrl = file.fileUrl || file.path || file.url || "";
|
const ext = fileName.split(".").pop().toLowerCase();
|
let icon = "file-text";
|
let color = "#909399";
|
if (["jpg", "jpeg", "png", "gif", "bmp", "webp"].includes(ext)) {
|
icon = "photo";
|
color = "#fa8c16";
|
} else if (["doc", "docx"].includes(ext)) {
|
icon = "file-text";
|
color = "#1890ff";
|
} else if (["xls", "xlsx", "csv"].includes(ext)) {
|
icon = "file-text";
|
color = "#52c41a";
|
} else if (["pdf"].includes(ext)) {
|
icon = "file-text";
|
color = "#f56c6c";
|
} else if (["txt", "text"].includes(ext)) {
|
icon = "file-text";
|
color = "#909399";
|
} else if (["zip", "rar", "7z"].includes(ext)) {
|
icon = "folder";
|
color = "#722ed1";
|
}
|
return {
|
id: file.infoid || index + 1,
|
name: fileName,
|
icon,
|
color,
|
size: "--",
|
url: fileUrl,
|
type: ext,
|
createTime: file.createTime || ""
|
};
|
});
|
} catch (error) {
|
common_vendor.index.__f__("error", "at pages/ethicalReview/ethicalInfo.vue:643", "解析附件失败:", error, filePatch);
|
const fileList = filePatch.split(";").filter((item) => item.trim());
|
materials.value = fileList.map((file, index) => {
|
const fileName = file.split("/").pop() || `附件${index + 1}`;
|
const ext = fileName.split(".").pop().toLowerCase();
|
let icon = "file-text";
|
let color = "#909399";
|
if (["jpg", "jpeg", "png", "gif", "bmp"].includes(ext)) {
|
icon = "photo";
|
color = "#fa8c16";
|
} else if (["doc", "docx"].includes(ext)) {
|
icon = "file-text";
|
color = "#1890ff";
|
} else if (["xls", "xlsx"].includes(ext)) {
|
icon = "file-text";
|
color = "#52c41a";
|
} else if (["pdf"].includes(ext)) {
|
icon = "file-text";
|
color = "#f56c6c";
|
}
|
return {
|
id: index + 1,
|
name: fileName,
|
icon,
|
color,
|
size: "--",
|
url: file
|
};
|
});
|
}
|
};
|
const updateButtonStatus = (status) => {
|
const statusNum = status;
|
switch (statusNum) {
|
case "3":
|
case "4":
|
case "5":
|
case "6":
|
showSaveBtn.value = false;
|
showSubmitBtn.value = false;
|
break;
|
default:
|
showSaveBtn.value = true;
|
showSubmitBtn.value = true;
|
submitBtnText.value = "提交审查";
|
}
|
};
|
const openSignaturePanel = () => {
|
if (isReadonly.value) {
|
common_vendor.index.showToast({
|
title: "当前任务已超时,不可操作",
|
icon: "none"
|
});
|
return;
|
}
|
showSignaturePanel.value = true;
|
common_vendor.nextTick$1(() => {
|
initCanvas();
|
});
|
};
|
const closeSignaturePanel = () => {
|
showSignaturePanel.value = false;
|
clearCanvas();
|
};
|
const initCanvas = () => {
|
ctx = common_vendor.index.createCanvasContext("signatureCanvas");
|
clearCanvas();
|
};
|
const clearCanvas = () => {
|
if (!ctx)
|
return;
|
ctx.clearRect(0, 0, canvasWidth, canvasHeight);
|
ctx.setStrokeStyle("#000000");
|
ctx.setLineWidth(3);
|
ctx.setLineCap("round");
|
ctx.setLineJoin("round");
|
ctx.draw();
|
strokeHistory = [];
|
tempSignatureData.value = "";
|
};
|
const undoLastStroke = () => {
|
if (strokeHistory.length == 0)
|
return;
|
strokeHistory.pop();
|
ctx.clearRect(0, 0, canvasWidth, canvasHeight);
|
ctx.setStrokeStyle("#000000");
|
ctx.setLineWidth(3);
|
ctx.setLineCap("round");
|
ctx.setLineJoin("round");
|
strokeHistory.forEach((stroke) => {
|
ctx.beginPath();
|
ctx.moveTo(stroke.startX, stroke.startY);
|
ctx.lineTo(stroke.endX, stroke.endY);
|
ctx.stroke();
|
});
|
ctx.draw();
|
if (strokeHistory.length == 0) {
|
tempSignatureData.value = "";
|
} else {
|
getCanvasImage();
|
}
|
};
|
const onTouchStart = (e) => {
|
if (isReadonly.value)
|
return;
|
isDrawing = true;
|
const touch = e.touches[0];
|
lastX = touch.x;
|
lastY = touch.y;
|
ctx.beginPath();
|
ctx.moveTo(lastX, lastY);
|
};
|
const onTouchMove = (e) => {
|
if (!isDrawing || isReadonly.value)
|
return;
|
const touch = e.touches[0];
|
const currentX = touch.x;
|
const currentY = touch.y;
|
ctx.lineTo(currentX, currentY);
|
ctx.stroke();
|
ctx.draw(true);
|
strokeHistory.push({
|
startX: lastX,
|
startY: lastY,
|
endX: currentX,
|
endY: currentY
|
});
|
lastX = currentX;
|
lastY = currentY;
|
};
|
const onTouchEnd = () => {
|
if (!isDrawing)
|
return;
|
isDrawing = false;
|
ctx.closePath();
|
getCanvasImage();
|
};
|
const getCanvasImage = () => {
|
common_vendor.index.canvasToTempFilePath({
|
canvasId: "signatureCanvas",
|
success: (res) => {
|
tempSignatureData.value = res.tempFilePath;
|
},
|
fail: (err) => {
|
common_vendor.index.__f__("error", "at pages/ethicalReview/ethicalInfo.vue:826", "获取画布图片失败:", err);
|
}
|
});
|
};
|
const confirmSignature = async () => {
|
if (!tempSignatureData.value) {
|
common_vendor.index.showToast({
|
title: "请先签名",
|
icon: "none"
|
});
|
return;
|
}
|
try {
|
common_vendor.index.showLoading({ title: "保存签名中..." });
|
const uploadResult = await uploadSignature(tempSignatureData.value);
|
if (uploadResult) {
|
signatureData.signatureUrl = uploadResult.url;
|
signatureData.signatureTime = (/* @__PURE__ */ new Date()).toLocaleString("zh-CN");
|
signatureData.fileName = uploadResult.originalFilename || `signature_${Date.now()}.png`;
|
signatureData.serverData = uploadResult;
|
saveSignatureToLocal(uploadResult);
|
common_vendor.index.hideLoading();
|
common_vendor.index.showToast({
|
title: "签名保存成功",
|
icon: "success"
|
});
|
showSignaturePanel.value = false;
|
clearCanvas();
|
} else {
|
common_vendor.index.hideLoading();
|
common_vendor.index.showToast({
|
title: "签名上传失败",
|
icon: "none"
|
});
|
}
|
} catch (error) {
|
common_vendor.index.__f__("error", "at pages/ethicalReview/ethicalInfo.vue:874", "签名上传失败:", error);
|
common_vendor.index.hideLoading();
|
common_vendor.index.showToast({
|
title: "签名上传失败",
|
icon: "none"
|
});
|
}
|
};
|
const uploadSignature = (filePath) => {
|
return new Promise((resolve, reject) => {
|
const token = common_vendor.index.getStorageSync("token");
|
const userInfo = common_vendor.index.getStorageSync("userInfo");
|
const expertName = (userInfo == null ? void 0 : userInfo.nickName) || (userInfo == null ? void 0 : userInfo.userName) || expertInfo.value.name;
|
common_vendor.index.uploadFile({
|
url: "/api/common/upload",
|
filePath,
|
name: "file",
|
header: {
|
Authorization: `Bearer ${token}`
|
},
|
formData: {
|
// 添加额外参数,参考附件组件
|
bizType: "expert_review_signature",
|
caseNo: caseInfo.value.caseNo || "",
|
expertName,
|
uploadType: "signature"
|
},
|
success: (res) => {
|
if (res.statusCode == 200) {
|
const data = JSON.parse(res.data);
|
common_vendor.index.__f__("log", "at pages/ethicalReview/ethicalInfo.vue:910", "签名上传成功:", data);
|
if (data.code == 200) {
|
resolve({
|
url: data.url,
|
fileName: data.fileName,
|
newFileName: data.newFileName,
|
originalFilename: data.originalFilename,
|
filePath: data.filePath || data.fileName,
|
size: data.size
|
});
|
} else {
|
reject(new Error(data.msg || "上传失败"));
|
}
|
} else {
|
reject(new Error(`上传失败,状态码: ${res.statusCode}`));
|
}
|
},
|
fail: (err) => {
|
reject(err);
|
}
|
});
|
});
|
};
|
const saveSignatureToLocal = (uploadData) => {
|
try {
|
const signatureInfo = {
|
signatureUrl: signatureData.signatureUrl,
|
signatureTime: signatureData.signatureTime,
|
fileName: signatureData.fileName,
|
uploadData,
|
// 保存上传返回的数据
|
caseNo: caseInfo.value.caseNo,
|
timestamp: Date.now()
|
};
|
common_vendor.index.setStorageSync("expert_review_signature", signatureInfo);
|
} catch (error) {
|
common_vendor.index.__f__("error", "at pages/ethicalReview/ethicalInfo.vue:949", "保存签名到本地失败:", error);
|
}
|
};
|
const removeSignature = () => {
|
if (isReadonly.value) {
|
common_vendor.index.showToast({
|
title: "当前任务已超时,不可操作",
|
icon: "none"
|
});
|
return;
|
}
|
common_vendor.index.showModal({
|
title: "提示",
|
content: "确定要删除签名吗?",
|
success: (res) => {
|
if (res.confirm) {
|
signatureData.signatureUrl = "";
|
signatureData.signatureTime = "";
|
signatureData.fileName = "";
|
signatureData.serverData = null;
|
common_vendor.index.removeStorageSync("expert_review_signature");
|
}
|
}
|
});
|
};
|
const previewSignature = () => {
|
if (signatureData.signatureUrl) {
|
let previewUrl = signatureData.signatureUrl;
|
if (!previewUrl.startsWith("http")) {
|
previewUrl = `${(userStore == null ? void 0 : userStore.baseUrlHt) || ""}${previewUrl}`;
|
}
|
common_vendor.index.previewImage({
|
urls: [previewUrl]
|
});
|
}
|
};
|
const previewMaterial = (material) => {
|
if (material.url) {
|
common_vendor.index.showLoading({ title: "加载中..." });
|
const fileExt = material.type || material.url.split(".").pop().toLowerCase();
|
if (["jpg", "jpeg", "png", "gif", "bmp", "webp"].includes(fileExt)) {
|
common_vendor.index.previewImage({
|
urls: [material.url],
|
current: 0,
|
success: () => {
|
common_vendor.index.__f__("log", "at pages/ethicalReview/ethicalInfo.vue:1011", "图片预览成功");
|
},
|
fail: (err) => {
|
common_vendor.index.__f__("error", "at pages/ethicalReview/ethicalInfo.vue:1014", "图片预览失败:", err);
|
common_vendor.index.showToast({
|
title: "图片加载失败",
|
icon: "none"
|
});
|
},
|
complete: () => {
|
common_vendor.index.hideLoading();
|
}
|
});
|
} else if (["pdf", "doc", "docx", "xls", "xlsx", "ppt", "pptx", "txt"].includes(
|
fileExt
|
)) {
|
common_vendor.index.downloadFile({
|
url: material.url,
|
success: (res) => {
|
if (res.statusCode == 200) {
|
const filePath = res.tempFilePath;
|
common_vendor.index.openDocument({
|
filePath,
|
showMenu: true,
|
fileType: fileExt == "pdf" ? "pdf" : "",
|
success: () => {
|
common_vendor.index.__f__("log", "at pages/ethicalReview/ethicalInfo.vue:1040", "打开文档成功");
|
},
|
fail: (err) => {
|
common_vendor.index.__f__("error", "at pages/ethicalReview/ethicalInfo.vue:1043", "打开文档失败:", err);
|
common_vendor.index.showToast({
|
title: "无法打开该文件",
|
icon: "none"
|
});
|
}
|
});
|
}
|
},
|
fail: (err) => {
|
common_vendor.index.__f__("error", "at pages/ethicalReview/ethicalInfo.vue:1053", "下载文件失败:", err);
|
common_vendor.index.showToast({
|
title: "文件下载失败",
|
icon: "none"
|
});
|
},
|
complete: () => {
|
common_vendor.index.hideLoading();
|
}
|
});
|
} else {
|
common_vendor.index.showToast({
|
title: `暂不支持预览${fileExt}格式文件`,
|
icon: "none"
|
});
|
common_vendor.index.hideLoading();
|
}
|
} else {
|
common_vendor.index.showToast({
|
title: `预览: ${material.name}`,
|
icon: "none"
|
});
|
}
|
};
|
const onConclusionChange = (value) => {
|
common_vendor.index.__f__("log", "at pages/ethicalReview/ethicalInfo.vue:1080", "选中结论:", value);
|
};
|
const saveDraft = async () => {
|
if (isReadonly.value) {
|
common_vendor.index.showToast({
|
title: "当前任务已超时,不可操作",
|
icon: "none"
|
});
|
return;
|
}
|
if (!validateForm(true))
|
return;
|
try {
|
common_vendor.index.showLoading({ title: "保存中..." });
|
const submitData = {
|
fcid: fcid.value,
|
expertconclusion: form.value.expertconclusion,
|
expertopinion: form.value.expertopinion,
|
sigin: signatureData.signatureUrl,
|
// 使用上传后的完整路径
|
receiveStatus: "2",
|
// 已接收状态
|
conclusiontime: common_vendor.dayjs().format("YYYY-MM-DD HH:mm:ss")
|
};
|
const res = await common_vendor.index.$uapi.post(
|
"/project/ethicalreviewopinions/edit",
|
submitData
|
);
|
if (res.code == 200) {
|
common_vendor.index.showToast({
|
title: "保存成功",
|
icon: "success"
|
});
|
caseInfo.value.receiveStatus = "2";
|
updateButtonStatus("2");
|
} else {
|
common_vendor.index.showToast({
|
title: res.msg || "保存失败",
|
icon: "none"
|
});
|
}
|
} catch (error) {
|
common_vendor.index.__f__("error", "at pages/ethicalReview/ethicalInfo.vue:1127", "保存草稿失败:", error);
|
common_vendor.index.showToast({
|
title: "保存失败",
|
icon: "none"
|
});
|
} finally {
|
common_vendor.index.hideLoading();
|
}
|
};
|
const submitReview = () => {
|
common_vendor.index.__f__("log", "at pages/ethicalReview/ethicalInfo.vue:1139", 1);
|
if (isReadonly.value) {
|
common_vendor.index.showToast({
|
title: "当前任务已超时,不可操作",
|
icon: "none"
|
});
|
return;
|
}
|
common_vendor.index.__f__("log", "at pages/ethicalReview/ethicalInfo.vue:1148", 2);
|
if (!validateForm())
|
return;
|
modalTitle.value = "确认提交";
|
modalContent.value = "确定要提交审查意见吗?提交后将无法修改。";
|
showSubmitModal.value = true;
|
};
|
const confirmSubmit = async () => {
|
try {
|
common_vendor.index.showLoading({ title: "提交中..." });
|
common_vendor.index.__f__("log", "at pages/ethicalReview/ethicalInfo.vue:1161", caseInfo.value, "form.value");
|
const submitData = {
|
id: fcid.value,
|
expertconclusion: form.value.expertconclusion,
|
expertopinion: form.value.expertopinion,
|
sigin: signatureData.signatureUrl,
|
expertType: caseInfo.value.expertType,
|
// 根据结论设置状态
|
receiveStatus: form.value.expertconclusion == "1" ? "5" : "6",
|
// 5-完成, 6-驳回
|
conclusiontime: common_vendor.dayjs().format("YYYY-MM-DD HH:mm:ss")
|
};
|
const res = await common_vendor.index.$uapi.post(
|
"/project/ethicalreviewopinions/edit",
|
submitData
|
);
|
if (res.code == 200) {
|
common_vendor.index.showToast({
|
title: "提交成功",
|
icon: "success",
|
duration: 2e3
|
});
|
caseInfo.value.receiveStatus = submitData.receiveStatus;
|
updateButtonStatus(submitData.receiveStatus);
|
showSubmitModal.value = false;
|
setTimeout(() => {
|
common_vendor.index.navigateBack();
|
}, 1500);
|
} else {
|
common_vendor.index.showToast({
|
title: res.msg || "提交失败",
|
icon: "none"
|
});
|
}
|
} catch (error) {
|
common_vendor.index.__f__("error", "at pages/ethicalReview/ethicalInfo.vue:1202", "提交失败:", error);
|
common_vendor.index.showToast({
|
title: "提交失败",
|
icon: "none"
|
});
|
} finally {
|
common_vendor.index.hideLoading();
|
}
|
};
|
const validateForm = (isDraft = false) => {
|
if (!form.value.expertconclusion && !isDraft) {
|
common_vendor.index.showToast({
|
title: "请选择审查结论",
|
icon: "none"
|
});
|
return false;
|
}
|
common_vendor.index.__f__("log", "at pages/ethicalReview/ethicalInfo.vue:1221", 3);
|
if (!form.value.expertopinion.trim() && !isDraft) {
|
common_vendor.index.showToast({
|
title: "请输入审查意见",
|
icon: "none"
|
});
|
return false;
|
}
|
common_vendor.index.__f__("log", "at pages/ethicalReview/ethicalInfo.vue:1230", signatureData, "signatureData");
|
if (!signatureData.signatureUrl && !isDraft) {
|
common_vendor.index.showToast({
|
title: "请进行手写签名",
|
icon: "none"
|
});
|
return false;
|
}
|
return true;
|
};
|
return (_ctx, _cache) => {
|
return common_vendor.e({
|
a: common_vendor.t(getStatusText(caseInfo.value.receiveStatus)),
|
b: common_vendor.n(getStatusClass(caseInfo.value.receiveStatus)),
|
c: common_vendor.p({
|
name: "file-text",
|
size: "14",
|
color: "#909399"
|
}),
|
d: common_vendor.t(caseInfo.value.inpatientno || "--"),
|
e: common_vendor.p({
|
name: "account",
|
size: "14",
|
color: "#909399"
|
}),
|
f: common_vendor.t(caseInfo.value.name || "--"),
|
g: common_vendor.p({
|
name: "man",
|
size: "14",
|
color: "#909399"
|
}),
|
h: common_vendor.t(caseInfo.value.sex || "--"),
|
i: common_vendor.t(caseInfo.value.age || "--"),
|
j: common_vendor.t(caseInfo.value.ageunit || "岁"),
|
k: common_vendor.p({
|
name: "heart",
|
size: "14",
|
color: "#909399"
|
}),
|
l: common_vendor.t(caseInfo.value.diagnosisname || "--"),
|
m: common_vendor.t(materials.value.length),
|
n: common_vendor.f(materials.value, (material, k0, i0) => {
|
return common_vendor.e({
|
a: "36d8dc6e-4-" + i0,
|
b: common_vendor.p({
|
name: material.icon,
|
color: material.color,
|
size: "18"
|
}),
|
c: common_vendor.t(material.name),
|
d: material.type
|
}, material.type ? {
|
e: common_vendor.t(material.type || "文件")
|
} : {}, {
|
f: common_vendor.t(material.size),
|
g: "36d8dc6e-5-" + i0,
|
h: material.id,
|
i: common_vendor.o(($event) => previewMaterial(material), material.id)
|
});
|
}),
|
o: common_vendor.p({
|
name: "arrow-right",
|
size: "14",
|
color: "#c0c4cc"
|
}),
|
p: isTimeout.value
|
}, isTimeout.value ? {
|
q: common_vendor.p({
|
name: "clock",
|
size: "16"
|
})
|
} : {}, {
|
r: common_vendor.f(conclusionOptions.value, (option, k0, i0) => {
|
return {
|
a: option.value,
|
b: "36d8dc6e-8-" + i0 + ",36d8dc6e-7",
|
c: common_vendor.p({
|
name: option.value,
|
label: option.label,
|
customStyle: {
|
marginBottom: "16rpx"
|
}
|
})
|
};
|
}),
|
s: common_vendor.o(onConclusionChange),
|
t: common_vendor.o(($event) => form.value.expertconclusion = $event),
|
v: common_vendor.p({
|
placement: "column",
|
activeColor: "#007aff",
|
disabled: isReadonly.value,
|
modelValue: form.value.expertconclusion
|
}),
|
w: common_vendor.o(($event) => form.value.expertopinion = $event),
|
x: common_vendor.p({
|
placeholder: "请输入详细的审查意见和改进建议...",
|
maxlength: "1000",
|
count: true,
|
height: 120,
|
border: "surround",
|
disabled: isReadonly.value,
|
modelValue: form.value.expertopinion
|
}),
|
y: common_vendor.p({
|
name: "edit-pen",
|
size: "16",
|
color: "#007aff"
|
}),
|
z: common_vendor.t(expertInfo.value.name),
|
A: common_vendor.p({
|
name: "clock",
|
size: "16",
|
color: "#007aff"
|
}),
|
B: common_vendor.t(currentTime.value),
|
C: isTimeout.value
|
}, isTimeout.value ? {
|
D: common_vendor.p({
|
name: "clock",
|
size: "16"
|
})
|
} : {}, {
|
E: signatureData.signatureUrl
|
}, signatureData.signatureUrl ? common_vendor.e({
|
F: signatureData.signatureUrl,
|
G: common_vendor.o(previewSignature),
|
H: common_vendor.t(expertInfo.value.name),
|
I: common_vendor.t(signatureData.signatureTime),
|
J: !isReadonly.value
|
}, !isReadonly.value ? {
|
K: common_vendor.p({
|
name: "photo",
|
size: "16"
|
}),
|
L: common_vendor.o(removeSignature)
|
} : {}) : common_vendor.e({
|
M: !isReadonly.value
|
}, !isReadonly.value ? {
|
N: common_vendor.p({
|
name: "edit-pen",
|
size: "48",
|
color: "#c0c4cc"
|
}),
|
O: common_vendor.o(openSignaturePanel)
|
} : {}), {
|
P: common_vendor.p(_ctx.N),
|
Q: common_vendor.o((...args) => _ctx.O && _ctx.O(...args)),
|
R: isReadonly.value && !signatureData.signatureUrl
|
}, isReadonly.value && !signatureData.signatureUrl ? {
|
S: common_vendor.p({
|
name: "close-circle",
|
size: "48",
|
color: "#dcdfe6"
|
})
|
} : {}, {
|
T: !isReadonly.value
|
}, !isReadonly.value ? common_vendor.e({
|
U: showSaveBtn.value
|
}, showSaveBtn.value ? {
|
V: common_vendor.p({
|
name: "file-text",
|
size: "16",
|
color: "#606266"
|
}),
|
W: common_vendor.o(saveDraft)
|
} : {}, {
|
X: showSubmitBtn.value
|
}, showSubmitBtn.value ? {
|
Y: common_vendor.p({
|
name: "checkmark",
|
size: "16",
|
color: "#fff"
|
}),
|
Z: common_vendor.t(submitBtnText.value),
|
aa: common_vendor.o(submitReview)
|
} : {}) : {}, {
|
ab: isReadonly.value
|
}, isReadonly.value ? {
|
ac: common_vendor.p({
|
name: "info-circle",
|
size: "20",
|
color: "#fa8c16"
|
})
|
} : {}, {
|
ad: canvasWidth + "px",
|
ae: canvasHeight + "px",
|
af: common_vendor.o(onTouchStart),
|
ag: common_vendor.o(onTouchMove),
|
ah: common_vendor.o(onTouchEnd),
|
ai: common_vendor.p({
|
name: "trash",
|
size: "20"
|
}),
|
aj: common_vendor.o(clearCanvas),
|
ak: common_vendor.p({
|
name: "play-left",
|
size: "20"
|
}),
|
al: common_vendor.o(undoLastStroke),
|
am: !canUndo.value,
|
an: common_vendor.p({
|
name: "checkmark",
|
size: "20"
|
}),
|
ao: common_vendor.o(confirmSignature),
|
ap: !hasSignature.value,
|
aq: tempSignatureData.value
|
}, tempSignatureData.value ? {
|
ar: tempSignatureData.value
|
} : {}, {
|
as: common_vendor.o(closeSignaturePanel),
|
at: common_vendor.p({
|
show: showSignaturePanel.value,
|
mode: "bottom",
|
round: 20,
|
closeable: true,
|
closeIcon: "close"
|
}),
|
av: common_vendor.unref(showHomeButton)
|
}, common_vendor.unref(showHomeButton) ? {
|
aw: common_vendor.p({
|
type: "home",
|
size: "24",
|
color: "#fff"
|
}),
|
ax: common_vendor.o((...args) => common_vendor.unref(goHome) && common_vendor.unref(goHome)(...args))
|
} : {}, {
|
ay: common_vendor.o(confirmSubmit),
|
az: common_vendor.o(($event) => showSubmitModal.value = false),
|
aA: common_vendor.p({
|
show: showSubmitModal.value,
|
title: modalTitle.value,
|
content: modalContent.value,
|
showCancelButton: true
|
}),
|
aB: common_vendor.gei(_ctx, "")
|
});
|
};
|
}
|
};
|
wx.createPage(_sfc_main);
|
//# sourceMappingURL=../../../.sourcemap/mp-weixin/pages/ethicalReview/ethicalInfo.js.map
|