|
@@ -105,8 +105,25 @@ $(function () {
|
|
|
let realNo = $("#realNoLabel").val();
|
|
|
// 从全局变量获取药师执业资格证号
|
|
|
let pharPracCertNo = window.currentPharPracCertNo || '';
|
|
|
- sendMedicineProcessing(realNo, orderNo, receiptNo, times, patientId, name, pharPracCertNo);
|
|
|
+
|
|
|
+ // 先验证追溯码数量,再决定是否发药
|
|
|
+ validateTracCodgQuantity(realNo, orderNo, receiptNo, times, patientId, name, pharPracCertNo);
|
|
|
+ });
|
|
|
+ // 追溯码数量确认弹框的确认发药按钮
|
|
|
+ $("#confirmTracCodgSend").click(function (t) {
|
|
|
+ // 获取存储的发药参数
|
|
|
+ let sendParams = window.pendingSendParams;
|
|
|
+ if (sendParams) {
|
|
|
+ // 隐藏确认弹框
|
|
|
+ $('#tracCodgConfirmModal').modal('hide');
|
|
|
+ // 执行发药处理
|
|
|
+ sendMedicineProcessing(sendParams.realNo, sendParams.orderNo, sendParams.receiptNo,
|
|
|
+ sendParams.times, sendParams.patientId, sendParams.name, sendParams.pharPracCertNo);
|
|
|
+ // 清除存储的参数
|
|
|
+ window.pendingSendParams = null;
|
|
|
+ }
|
|
|
});
|
|
|
+
|
|
|
$("#printSend").click(function (t) {
|
|
|
$('#zydybqModal').modal('hide');
|
|
|
$("#zyypbq_name").attr("value", $("#zydyNameLabel").val());
|
|
@@ -3539,4 +3556,102 @@ function callYbReturnGoodsItemWithData(ybData, item) {
|
|
|
// 医保接口失败不影响退药流程,只记录日志
|
|
|
}
|
|
|
});
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * 验证追溯码数量与处方数量的匹配情况
|
|
|
+ * @param realNo 流水号
|
|
|
+ * @param orderNo 处方号
|
|
|
+ * @param receiptNo 发票分票号
|
|
|
+ * @param times 次数
|
|
|
+ * @param patientId 病人ID
|
|
|
+ * @param name 病人姓名
|
|
|
+ * @param pharPracCertNo 药师执业资格证号
|
|
|
+ */
|
|
|
+function validateTracCodgQuantity(realNo, orderNo, receiptNo, times, patientId, name, pharPracCertNo) {
|
|
|
+ // 获取处方明细表格数据
|
|
|
+ let tableData = $("#tb_table_right").bootstrapTable('getData');
|
|
|
+ let mismatchDetails = [];
|
|
|
+ let hasMismatch = false;
|
|
|
+
|
|
|
+ console.log('开始验证追溯码数量,表格数据:', tableData);
|
|
|
+
|
|
|
+ // 遍历每种药品,检查追溯码数量
|
|
|
+ for (let i = 0; i < tableData.length; i++) {
|
|
|
+ let drug = tableData[i];
|
|
|
+ let prescriptionQuantity = parseInt(drug.quantity) || 0; // 处方数量
|
|
|
+ let tracCodgCount = 0; // 追溯码数量
|
|
|
+
|
|
|
+ // 计算该药品的追溯码数量
|
|
|
+ if (!isEmpty(drug.drugTracCodg)) {
|
|
|
+ // 按<br>分割追溯码,过滤空值
|
|
|
+ let tracCodgList = drug.drugTracCodg.split('<br>').filter(code => code.trim().length > 0);
|
|
|
+ tracCodgCount = tracCodgList.length;
|
|
|
+ }
|
|
|
+
|
|
|
+ console.log('药品:', drug.drugname, '处方数量:', prescriptionQuantity, '追溯码数量:', tracCodgCount);
|
|
|
+
|
|
|
+ // 检查数量是否匹配
|
|
|
+ if (tracCodgCount !== prescriptionQuantity) {
|
|
|
+ hasMismatch = true;
|
|
|
+ let mismatchInfo = {
|
|
|
+ drugName: drug.drugname,
|
|
|
+ prescriptionQuantity: prescriptionQuantity,
|
|
|
+ tracCodgCount: tracCodgCount,
|
|
|
+ difference: tracCodgCount - prescriptionQuantity
|
|
|
+ };
|
|
|
+ mismatchDetails.push(mismatchInfo);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 如果有不匹配的情况,显示确认弹框
|
|
|
+ if (hasMismatch) {
|
|
|
+ // 存储发药参数,供确认后使用
|
|
|
+ window.pendingSendParams = {
|
|
|
+ realNo: realNo,
|
|
|
+ orderNo: orderNo,
|
|
|
+ receiptNo: receiptNo,
|
|
|
+ times: times,
|
|
|
+ patientId: patientId,
|
|
|
+ name: name,
|
|
|
+ pharPracCertNo: pharPracCertNo
|
|
|
+ };
|
|
|
+
|
|
|
+ // 构建不匹配详情HTML
|
|
|
+ let detailsHtml = '<div class="table-responsive"><table class="table table-bordered table-striped">';
|
|
|
+ detailsHtml += '<thead><tr><th>药品名称</th><th>处方数量</th><th>追溯码数量</th><th>差异</th></tr></thead><tbody>';
|
|
|
+
|
|
|
+ for (let i = 0; i < mismatchDetails.length; i++) {
|
|
|
+ let detail = mismatchDetails[i];
|
|
|
+ let differenceText = '';
|
|
|
+ let rowClass = '';
|
|
|
+
|
|
|
+ if (detail.difference > 0) {
|
|
|
+ differenceText = '<span style="color: orange;">多输入 ' + detail.difference + ' 个</span>';
|
|
|
+ rowClass = 'warning';
|
|
|
+ } else if (detail.difference < 0) {
|
|
|
+ differenceText = '<span style="color: red;">缺少 ' + Math.abs(detail.difference) + ' 个</span>';
|
|
|
+ rowClass = 'danger';
|
|
|
+ }
|
|
|
+
|
|
|
+ detailsHtml += '<tr class="' + rowClass + '">';
|
|
|
+ detailsHtml += '<td>' + detail.drugName + '</td>';
|
|
|
+ detailsHtml += '<td>' + detail.prescriptionQuantity + '</td>';
|
|
|
+ detailsHtml += '<td>' + detail.tracCodgCount + '</td>';
|
|
|
+ detailsHtml += '<td>' + differenceText + '</td>';
|
|
|
+ detailsHtml += '</tr>';
|
|
|
+ }
|
|
|
+
|
|
|
+ detailsHtml += '</tbody></table></div>';
|
|
|
+
|
|
|
+ // 显示确认弹框
|
|
|
+ $('#tracCodgMismatchDetails').html(detailsHtml);
|
|
|
+ $('#tracCodgConfirmModal').modal('show');
|
|
|
+
|
|
|
+ console.log('追溯码数量不匹配,显示确认弹框:', mismatchDetails);
|
|
|
+ } else {
|
|
|
+ // 数量匹配,直接发药
|
|
|
+ console.log('追溯码数量匹配,直接发药');
|
|
|
+ sendMedicineProcessing(realNo, orderNo, receiptNo, times, patientId, name, pharPracCertNo);
|
|
|
+ }
|
|
|
}
|