|
@@ -1437,11 +1437,34 @@ function prescriptionDetail(realNo, orderNo, receiptNo, times, patientId, confir
|
|
|
if (field === 'drugTracCodg') {
|
|
|
$element.attr('contenteditable', true);
|
|
|
$element.focus();
|
|
|
- $element.blur(function () {
|
|
|
+
|
|
|
+ // 添加扫码输入监听(新增功能,不影响原有逻辑)
|
|
|
+ let inputTimer = null;
|
|
|
+
|
|
|
+ $element.off('input.tracCodg').on('input.tracCodg', function(e) {
|
|
|
+ let inputValue = e.target.textContent || e.target.innerText;
|
|
|
+
|
|
|
+ // 清除之前的定时器
|
|
|
+ if (inputTimer) {
|
|
|
+ clearTimeout(inputTimer);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 设置防抖定时器,0.5秒后触发验证
|
|
|
+ inputTimer = setTimeout(function() {
|
|
|
+ if (inputValue && inputValue.trim().length > 0) {
|
|
|
+ // 保存当前内容,用于验证失败时恢复
|
|
|
+ let originalContent = $element.html();
|
|
|
+ validateAndAddTracCodg(inputValue.trim(), row, $element, originalContent);
|
|
|
+ }
|
|
|
+ }, 500);
|
|
|
+ });
|
|
|
+
|
|
|
+ // 保持原有的失去焦点保存逻辑
|
|
|
+ $element.off('blur.tracCodg').blur(function () {
|
|
|
let index = $element.parent().data('index');
|
|
|
let tdValue = $element.html();
|
|
|
saveCellData($('#tb_table_right'), index, field, tdValue);
|
|
|
- })
|
|
|
+ });
|
|
|
}
|
|
|
},
|
|
|
responseHandler: function (res) {
|
|
@@ -2828,4 +2851,104 @@ $(document).ready(function () {
|
|
|
isTyOk = false;
|
|
|
|
|
|
initTbTable();
|
|
|
-});
|
|
|
+});
|
|
|
+
|
|
|
+/**
|
|
|
+ * 验证并添加追溯码
|
|
|
+ * @param tracCodg 追溯码
|
|
|
+ * @param rowData 行数据
|
|
|
+ * @param $element 单元格元素
|
|
|
+ */
|
|
|
+function validateAndAddTracCodg(tracCodg, rowData, $element, originalContent) {
|
|
|
+ // 构建验证数据,只包含可以从rowData中获取的字段
|
|
|
+ let validateData = {
|
|
|
+ drugTracCodg: tracCodg, // 这是用户扫码输入的追溯码
|
|
|
+ patientId: rowData.patientId,
|
|
|
+ times: rowData.times,
|
|
|
+ receiptNo: rowData.receiptNo,
|
|
|
+ orderNo: rowData.orderNo,
|
|
|
+ itemNo: rowData.itemNo,
|
|
|
+ chargeItemCode: rowData.chargeItemCode,
|
|
|
+ drugName: rowData.drugname,
|
|
|
+ specification: rowData.specification
|
|
|
+ };
|
|
|
+
|
|
|
+ // 添加调试日志
|
|
|
+ console.log('验证追溯码参数:', validateData);
|
|
|
+ console.log('行数据:', rowData);
|
|
|
+
|
|
|
+ $.ajax({
|
|
|
+ type: "POST",
|
|
|
+ url: '/thmz/validateDrugTracCodgForDispensing',
|
|
|
+ contentType: "application/json;charset=UTF-8",
|
|
|
+ dataType: "json",
|
|
|
+ headers: {
|
|
|
+ 'Accept': 'application/json',
|
|
|
+ 'Authorization': 'Bearer ' + localStorage.getItem("token")
|
|
|
+ },
|
|
|
+ data: JSON.stringify(validateData),
|
|
|
+ success: function (res) {
|
|
|
+ console.log('验证响应:', res);
|
|
|
+ if (res.code == 0 && res.data && res.data.isValid) {
|
|
|
+ // 验证成功,添加到追溯码集合
|
|
|
+ addTracCodgToCell(tracCodg, $element);
|
|
|
+ successMesage(res);
|
|
|
+ // 验证成功后,保持单元格可编辑状态,用户可以继续扫码
|
|
|
+ $element.focus();
|
|
|
+ } else {
|
|
|
+ // 验证失败
|
|
|
+ errorMesage(res);
|
|
|
+ // 验证失败时,恢复原始内容
|
|
|
+ if (originalContent !== undefined) {
|
|
|
+ $element.html(originalContent);
|
|
|
+ }
|
|
|
+ // 保持焦点,让用户继续扫码
|
|
|
+ $element.focus();
|
|
|
+ }
|
|
|
+ },
|
|
|
+ error: function (xhr, status, error) {
|
|
|
+ console.error('验证请求失败:', error);
|
|
|
+ errorMesageSimaple("验证请求失败");
|
|
|
+ // 错误时也恢复原始内容
|
|
|
+ if (originalContent !== undefined) {
|
|
|
+ $element.html(originalContent);
|
|
|
+ }
|
|
|
+ $element.focus();
|
|
|
+ }
|
|
|
+ });
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * 添加追溯码到单元格
|
|
|
+ * @param tracCodg 追溯码
|
|
|
+ * @param $element 单元格元素
|
|
|
+ */
|
|
|
+function addTracCodgToCell(tracCodg, $element) {
|
|
|
+ let currentValue = $element.html();
|
|
|
+ let newValue = '';
|
|
|
+
|
|
|
+ if (isEmpty(currentValue)) {
|
|
|
+ newValue = tracCodg;
|
|
|
+ } else {
|
|
|
+ // 检查是否已存在该追溯码
|
|
|
+ let existingCodes = currentValue.split('<br>');
|
|
|
+ if (!existingCodes.includes(tracCodg)) {
|
|
|
+ newValue = currentValue + '<br>' + tracCodg;
|
|
|
+ } else {
|
|
|
+ // 追溯码已存在,显示提示但不显示错误样式
|
|
|
+ console.log('追溯码已存在:', tracCodg);
|
|
|
+ // 使用简单的提示,而不是错误消息
|
|
|
+ if (typeof PNotify !== 'undefined') {
|
|
|
+ new PNotify({
|
|
|
+ title: '提示',
|
|
|
+ text: '该追溯码已添加',
|
|
|
+ type: 'info',
|
|
|
+ delay: 2000
|
|
|
+ });
|
|
|
+ }
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ $element.html(newValue);
|
|
|
+}
|