|
@@ -1961,6 +1961,29 @@ function saveCancelRefundMedicine() {
|
|
|
}).then((res) => {
|
|
|
$("#btn_cancel_ty").attr("disabled", false);
|
|
|
successMesage(res);
|
|
|
+
|
|
|
+ // ========== 调用撤销退药医保接口 ==========
|
|
|
+ console.log('=== 开始调用撤销退药医保接口 ===');
|
|
|
+ // 获取撤销退药记录的基本信息
|
|
|
+ let patientId = row[0].patientId;
|
|
|
+ let times = row[0].times;
|
|
|
+ let receiptNo = row[0].receiptNo;
|
|
|
+ let orderNo = row[0].orderNo;
|
|
|
+ let realNo = row[0].realNo;
|
|
|
+ let name = row[0].name;
|
|
|
+
|
|
|
+ console.log('撤销退药医保接口参数:', {
|
|
|
+ patientId: patientId,
|
|
|
+ times: times,
|
|
|
+ receiptNo: receiptNo,
|
|
|
+ orderNo: orderNo,
|
|
|
+ realNo: realNo,
|
|
|
+ name: name
|
|
|
+ });
|
|
|
+
|
|
|
+ // 调用撤销退药医保接口
|
|
|
+ callYbSaleGoodsItemForCancelRefund(realNo, orderNo, receiptNo, times, patientId, name);
|
|
|
+
|
|
|
initTbTable();
|
|
|
},err =>{
|
|
|
$("#btn_cancel_ty").attr("disabled",false);
|
|
@@ -3260,14 +3283,14 @@ function callYbSaleGoodsItem(realNo, orderNo, receiptNo, times, patientId, name,
|
|
|
let item = tableData[i];
|
|
|
|
|
|
// 构建关联字段组合(用于关联发药记录)
|
|
|
- let patientId = item.patientId || patientId;
|
|
|
- let times = item.times || times;
|
|
|
- let receiptNo = item.receiptNo || receiptNo;
|
|
|
- let orderNo = item.orderNo || orderNo;
|
|
|
+ let currentPatientId = item.patientId || patientId;
|
|
|
+ let currentTimes = item.times || times;
|
|
|
+ let currentReceiptNo = item.receiptNo || receiptNo;
|
|
|
+ let currentOrderNo = item.orderNo || orderNo;
|
|
|
let chargeItemCode = item.chargeItemCode;
|
|
|
- let realNo = item.realNo || realNo;
|
|
|
+ let currentRealNo = item.realNo || realNo;
|
|
|
|
|
|
- console.log('发药关联键:', {patientId, times, receiptNo, orderNo, chargeItemCode, realNo});
|
|
|
+ console.log('发药关联键:', {patientId: currentPatientId, times: currentTimes, receiptNo: currentReceiptNo, orderNo: currentOrderNo, chargeItemCode, realNo: currentRealNo});
|
|
|
|
|
|
// 参数验证
|
|
|
// 从处方明细数据中获取开方医师姓名
|
|
@@ -3285,12 +3308,12 @@ function callYbSaleGoodsItem(realNo, orderNo, receiptNo, times, patientId, name,
|
|
|
// 构建医保接口参数
|
|
|
let ybData = {
|
|
|
// 关联字段 - 直接传递到医保接口
|
|
|
- patientId: patientId,
|
|
|
- times: times,
|
|
|
- receiptNo: receiptNo,
|
|
|
- orderNo: orderNo,
|
|
|
+ patientId: currentPatientId,
|
|
|
+ times: currentTimes,
|
|
|
+ receiptNo: currentReceiptNo,
|
|
|
+ orderNo: currentOrderNo,
|
|
|
chargeItemCode: chargeItemCode,
|
|
|
- realNo: realNo,
|
|
|
+ realNo: currentRealNo,
|
|
|
|
|
|
// 医疗目录编码(医保编码)
|
|
|
medListCodg: item.nationalCode,
|
|
@@ -3478,7 +3501,7 @@ function callYbReturnGoodsItem(realNo, orderNo, receiptNo, times, patientId, nam
|
|
|
itemNo: item.item_no,
|
|
|
groupNo: item.group_no || groupNo
|
|
|
};
|
|
|
-
|
|
|
+ console.log("调用退药医保接口tracCodgParams000000000000000000000",tracCodgParams)
|
|
|
// 调用追溯码查询接口(异步方式)
|
|
|
// 注意:退药处理后,追溯码已转移到 mz_drug_trac_codg_ty 表
|
|
|
$.ajax({
|
|
@@ -3654,4 +3677,206 @@ function validateTracCodgQuantity(realNo, orderNo, receiptNo, times, patientId,
|
|
|
console.log('追溯码数量匹配,直接发药');
|
|
|
sendMedicineProcessing(realNo, orderNo, receiptNo, times, patientId, name, pharPracCertNo);
|
|
|
}
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * 调用撤销退药医保接口(销售接口)
|
|
|
+ * @param realNo 流水号
|
|
|
+ * @param orderNo 处方号
|
|
|
+ * @param receiptNo 发票分票号
|
|
|
+ * @param times 次数
|
|
|
+ * @param patientId 病人ID
|
|
|
+ * @param name 病人姓名
|
|
|
+ */
|
|
|
+function callYbSaleGoodsItemForCancelRefund(realNo, orderNo, receiptNo, times, patientId, name) {
|
|
|
+ // 获取撤销退药后的处方明细数据 - 从已恢复的收费明细表获取
|
|
|
+ let tableData = $("#tb_table_right").bootstrapTable('getData');
|
|
|
+
|
|
|
+ if (!tableData || tableData.length === 0) {
|
|
|
+ console.log('没有处方明细数据,跳过撤销退药医保接口调用');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取当前用户信息(药师信息)
|
|
|
+ let currentUserName = localStorage.getItem('userName') || '';
|
|
|
+ let currentUserId = localStorage.getItem('userID') || '';
|
|
|
+
|
|
|
+ // 获取当前时间
|
|
|
+ let currentTime = new Date();
|
|
|
+ let selRetnTime = currentTime.getFullYear() + '-' +
|
|
|
+ String(currentTime.getMonth() + 1).padStart(2, '0') + '-' +
|
|
|
+ String(currentTime.getDate()).padStart(2, '0') + ' ' +
|
|
|
+ String(currentTime.getHours()).padStart(2, '0') + ':' +
|
|
|
+ String(currentTime.getMinutes()).padStart(2, '0') + ':' +
|
|
|
+ String(currentTime.getSeconds()).padStart(2, '0');
|
|
|
+
|
|
|
+ // 为每个药品调用一次医保接口
|
|
|
+ for (let i = 0; i < tableData.length; i++) {
|
|
|
+ let item = tableData[i];
|
|
|
+
|
|
|
+ // 构建关联字段组合(用于关联撤销退药记录)
|
|
|
+ let currentPatientId = item.patientId || patientId;
|
|
|
+ let currentTimes = item.times || times;
|
|
|
+ let currentReceiptNo = item.receiptNo || receiptNo;
|
|
|
+ let currentOrderNo = item.orderNo || orderNo;
|
|
|
+ let chargeItemCode = item.chargeItemCode;
|
|
|
+ let currentRealNo = item.realNo || realNo;
|
|
|
+
|
|
|
+ console.log('撤销退药关联键:', {patientId: currentPatientId, times: currentTimes, receiptNo: currentReceiptNo, orderNo: currentOrderNo, chargeItemCode, realNo: currentRealNo});
|
|
|
+
|
|
|
+ // 参数验证
|
|
|
+ // 从处方明细数据中获取开方医师姓名
|
|
|
+ let doctorName = item.doctorName || item.employeeName || '';
|
|
|
+ if (!doctorName) {
|
|
|
+ console.warn('开方医师姓名为空,使用默认值');
|
|
|
+ doctorName = '未知医师';
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!currentUserName) {
|
|
|
+ console.warn('药师姓名为空,使用默认值');
|
|
|
+ currentUserName = '未知药师';
|
|
|
+ }
|
|
|
+
|
|
|
+ // 构建医保接口参数 - 与发药时相同的参数结构
|
|
|
+ let ybData = {
|
|
|
+ // 关联字段 - 直接传递到医保接口
|
|
|
+ patientId: currentPatientId,
|
|
|
+ times: currentTimes,
|
|
|
+ receiptNo: currentReceiptNo,
|
|
|
+ orderNo: currentOrderNo,
|
|
|
+ chargeItemCode: chargeItemCode,
|
|
|
+ realNo: currentRealNo,
|
|
|
+
|
|
|
+ // 医疗目录编码(医保编码)
|
|
|
+ medListCodg: item.nationalCode,
|
|
|
+
|
|
|
+ // 开方医师姓名
|
|
|
+ prscDrName: doctorName,
|
|
|
+
|
|
|
+ // 药师姓名
|
|
|
+ pharName: currentUserName,
|
|
|
+
|
|
|
+ // 药师执业资格证号(取当前操作者的药师执业资格证号)
|
|
|
+ pharPracCertNo: localStorage.getItem('pharPracCertNo') || '',
|
|
|
+
|
|
|
+ // 销售/退货经办人姓名
|
|
|
+ selRetnOpterName: currentUserName,
|
|
|
+
|
|
|
+ // 就诊结算类型(1-医保结算 2-自费结算)
|
|
|
+ mdtrtSetlType: item.mdtrtSetlType || '2',
|
|
|
+
|
|
|
+ // 处方药标志
|
|
|
+ rxFlag: item.rxFlag || '0',
|
|
|
+
|
|
|
+ // 拆零标志(0-否;1-是)
|
|
|
+ trdnFlag: item.clFlag || '0',
|
|
|
+
|
|
|
+ // 患者相关参数(医保接口需要)
|
|
|
+ // 人员证件类型
|
|
|
+ psnCertType: item.psnCertType || '01',
|
|
|
+ // 证件号码
|
|
|
+ certno: item.certno || '',
|
|
|
+ // 人员姓名
|
|
|
+ psnName: item.psnName || item.name || name || '',
|
|
|
+
|
|
|
+ };
|
|
|
+
|
|
|
+ // 追溯码信息 - 从已恢复的追溯码表获取
|
|
|
+ let drugtracinfo = [];
|
|
|
+
|
|
|
+ // 主动获取追溯码信息(撤销退药后,追溯码已恢复到 mz_drug_trac_codg 表)
|
|
|
+ let tracCodgParams = {
|
|
|
+ patientId: currentPatientId,
|
|
|
+ times: currentTimes,
|
|
|
+ receiptNo: currentReceiptNo,
|
|
|
+ orderNo: currentOrderNo,
|
|
|
+ chargeItemCode: chargeItemCode,
|
|
|
+ serial: item.serial,
|
|
|
+ itemNo: item.itemNo,
|
|
|
+ groupNo: item.groupNo || groupNo
|
|
|
+ };
|
|
|
+
|
|
|
+ // 调用追溯码查询接口(异步方式)
|
|
|
+ // 注意:撤销退药后,追溯码已恢复到 mz_drug_trac_codg 表
|
|
|
+ $.ajax({
|
|
|
+ type: "POST",
|
|
|
+ url: '/thmz/getMzDrugTracCodgData',
|
|
|
+ contentType: "application/json;charset=UTF-8",
|
|
|
+ dataType: "json",
|
|
|
+ headers: {
|
|
|
+ 'Accept': 'application/json',
|
|
|
+ 'Authorization': 'Bearer ' + localStorage.getItem("token")
|
|
|
+ },
|
|
|
+ data: JSON.stringify(tracCodgParams),
|
|
|
+ success: function (tracRes) {
|
|
|
+ console.log('撤销退药追溯码查询结果:', tracRes);
|
|
|
+ if (tracRes.code === 0 && tracRes.data && tracRes.data.length > 0) {
|
|
|
+ // 将追溯码添加到医保接口参数中
|
|
|
+ for (let k = 0; k < tracRes.data.length; k++) {
|
|
|
+ let tracItem = tracRes.data[k];
|
|
|
+ if (tracItem.drugTracCodg && tracItem.drugTracCodg !== '') {
|
|
|
+ drugtracinfo.push({
|
|
|
+ drugTracCodg: tracItem.drugTracCodg
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ console.log('撤销退药成功获取追溯码:', drugtracinfo);
|
|
|
+ } else {
|
|
|
+ console.log('撤销退药未找到追溯码信息');
|
|
|
+ }
|
|
|
+
|
|
|
+ // 追溯码查询完成后,调用医保接口
|
|
|
+ callYbSaleGoodsItemWithDataForCancelRefund(ybData, item, drugtracinfo);
|
|
|
+ },
|
|
|
+ error: function (xhr, status, error) {
|
|
|
+ console.error('撤销退药追溯码查询失败:', error);
|
|
|
+ // 即使追溯码查询失败,也要调用医保接口
|
|
|
+ callYbSaleGoodsItemWithDataForCancelRefund(ybData, item, drugtracinfo);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * 调用撤销退药医保接口(带追溯码数据)
|
|
|
+ * @param ybData 医保接口参数
|
|
|
+ * @param item 药品信息
|
|
|
+ * @param drugtracinfo 追溯码信息
|
|
|
+ */
|
|
|
+function callYbSaleGoodsItemWithDataForCancelRefund(ybData, item, drugtracinfo) {
|
|
|
+ // 如果没有追溯码,添加空数组(保持数据结构一致)
|
|
|
+ if (drugtracinfo.length === 0) {
|
|
|
+ drugtracinfo = [];
|
|
|
+ }
|
|
|
+
|
|
|
+ console.log('调用撤销退药医保接口,药品:', item.drugname, '参数:', ybData);
|
|
|
+
|
|
|
+ let param = {
|
|
|
+ selinfoSold: ybData,
|
|
|
+ drugtracinfo: drugtracinfo
|
|
|
+ }
|
|
|
+ console.log("调用撤销退药医保接口param11111111111111111111111111111111111",param)
|
|
|
+ // 调用医保接口
|
|
|
+ $.ajax({
|
|
|
+ type: "POST",
|
|
|
+ url: '/thmz/Yb/saleGoodsItem',
|
|
|
+ contentType: "application/json;charset=UTF-8",
|
|
|
+ dataType: "json",
|
|
|
+ headers: {
|
|
|
+ 'Accept': 'application/json',
|
|
|
+ 'Authorization': 'Bearer ' + localStorage.getItem("token")
|
|
|
+ },
|
|
|
+ data: JSON.stringify(param),
|
|
|
+ success: function (res) {
|
|
|
+ console.log('撤销退药医保接口调用成功:', res);
|
|
|
+ if (res.code !== 0) {
|
|
|
+ console.error('撤销退药医保接口调用失败:', res.message);
|
|
|
+ // 医保接口失败不影响撤销退药流程,只记录日志
|
|
|
+ }
|
|
|
+ },
|
|
|
+ error: function (xhr, status, error) {
|
|
|
+ console.error('撤销退药医保接口调用失败:', error);
|
|
|
+ // 医保接口失败不影响撤销退药流程,只记录日志
|
|
|
+ }
|
|
|
+ });
|
|
|
}
|