newRecipe.html 59 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311
  1. <!DOCTYPE html>
  2. <html lang="zh" xmlns:th="http://www.thymeleaf.org" >
  3. <head>
  4. <th:block th:include="include :: header('处方登记信息')" />
  5. <th:block th:include="include :: select2-css" />
  6. <th:block th:include="include :: bootstrap-fileinput-css" />
  7. <th:block th:include="include :: layout-latest-css" />
  8. </head>
  9. <body class="gray-bg">
  10. <div class="col-sm-12 search-collapse">
  11. <form id="dtp-form-hxcx" class="customize-search-form">
  12. <div class="customize-form-group-container">
  13. <div class="customize-form-group">
  14. <label>患者信息:</label>
  15. <input type="text" class="styled-input" placeholder="输入姓名或手机号/证件号码" id="query" name="query"/>
  16. </div>
  17. <div class="customize-form-group">
  18. <a class="btn btn-primary btn-rounded btn-sm" onclick="search_hz()">&nbsp;搜索</a>
  19. <a class="btn btn-warning btn-rounded btn-sm" onclick="resetPre()">重置</a>
  20. <a class="btn btn-info btn-rounded btn-sm" onclick="bookbuilding()">&nbsp;快速建档</a>
  21. </div>
  22. </div>
  23. </form>
  24. <div id="patient-table-container">
  25. <table id="patient-table" class="customize-table">
  26. <thead>
  27. <tr>
  28. <th></th> <!-- 选择框 -->
  29. <th>患者ID</th>
  30. <th>患者姓名</th>
  31. <th>性别</th>
  32. <th>年龄</th>
  33. <th>证件类型</th>
  34. <th>证件号码</th>
  35. <th>临床诊断</th>
  36. <th>联系电话</th>
  37. <!-- 添加其他需要显示的列 -->
  38. </tr>
  39. </thead>
  40. <tbody>
  41. <!-- 数据行将由 JavaScript 动态插入 -->
  42. </tbody>
  43. </table>
  44. </div>
  45. </div>
  46. <div class="col-sm-12 search-collapse">
  47. <h4 class="query-condition-title">新建处方登记</h4>
  48. <form id="dtp-form-newcfxx" class="customize-search-form">
  49. <div class="customize-form-group-container">
  50. <div class="customize-form-group">
  51. <label>医院:</label>
  52. <!-- <input name="hospital" placeholder="医院" id="hospital" class="styled-input" type="text">-->
  53. <select id="hospital-select" name="hospital" class="styled-input form-control select2-multiple" placeholder="请选择或输入搜索">
  54. <option value="">请选择医院</option>
  55. </select>
  56. </div>
  57. <div class="customize-form-group">
  58. <label class="is-required">处方医生:</label>
  59. <input name="prescribingDoctor" id="prescribingDoctor" placeholder="处方医生" class="styled-input" type="text">
  60. </div>
  61. <div class="customize-form-group">
  62. <label>科室:</label>
  63. <input name="department" id="department" placeholder="科室" class="styled-input" type="text">
  64. </div>
  65. <div class="customize-form-group">
  66. <label class="is-required">处方诊断::</label>
  67. <input name="prescriptionDiagnosis" id="prescriptionDiagnosis" placeholder="处方诊断" class="styled-input" type="text">
  68. </div>
  69. <div class="customize-form-group">
  70. <label class="is-required">主管医生:</label>
  71. <input name="attendingDoctor" id="attendingDoctor" placeholder="主管医生" class="styled-input" type="text">
  72. </div>
  73. <div class="customize-form-group-container">
  74. </div>
  75. <!-- <div class="customize-form-group">-->
  76. <!-- <label class="is-required">临床诊断:</label>-->
  77. <!-- <input name="clinicalDiagnosis" id="clinicalDiagnosis" placeholder="临床诊断" class="styled-input" type="text">-->
  78. <!-- </div>-->
  79. <div class="customize-form-group">
  80. <label>处方图片:</label>
  81. <input name="prescriptionImageUrl" id="prescriptionImageUrl" placeholder="处方图片" class="styled-input" type="text">
  82. </div>
  83. <div class="customize-form-group select-time">
  84. <label class="is-required">处方开具日期:</label>
  85. <input name="prescriptionIssueDate" id="prescriptionIssueDate" placeholder="处方开具日期" class="time-input time-input2" type="text">
  86. </div>
  87. <div class="customize-form-group">
  88. <label>发票编码:</label>
  89. <input name="invoiceCode" id="invoiceCode" placeholder="发票编码" class="styled-input" type="text">
  90. </div>
  91. <div class="customize-form-group">
  92. <label>发票图片:</label>
  93. <input name="invoiceImageUrl" id="invoiceImageUrl" placeholder="发票图片" class="styled-input" type="text">
  94. </div>
  95. <!-- <div class="customize-form-group">-->
  96. <!-- <label class="is-required">登记药师姓名:</label>-->
  97. <!-- <input name="registerPharmacistName" id="registerPharmacistName" placeholder="登记药师姓名" class="styled-input" type="text">-->
  98. <!-- </div>-->
  99. <div class="customize-form-group">
  100. <label class="is-required">登记人:</label>
  101. <input name="registrant" id="registrant" placeholder="登记人" class="styled-input" type="text">
  102. </div>
  103. <!--<div class="customize-form-group">
  104. <label>审核药师姓名:</label>
  105. <input name="reviewingName" id="reviewingName" placeholder="审核药师姓名" class="styled-input" type="text">
  106. </div>-->
  107. <div class="customize-form-group">
  108. <label>处方类型</label>
  109. <select name="prescriptionType" th:with="type=${@dict.getType('sys_select_prescription_ype')}" class="styled-input">
  110. <option value="">全部</option>
  111. <option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"
  112. ></option>
  113. </select>
  114. </div>
  115. <div class="customize-form-group">
  116. <label class="col-sm-1 control-label">临床诊断大类:</label>
  117. <select id="category-select" class="styled-input form-control select2-multiple" multiple placeholder="请选择或输入搜索">
  118. <option value="">请选择疾病大类</option>
  119. </select>
  120. </div>
  121. <div class="customize-form-group">
  122. <label class="col-sm-1 control-label">临床诊断小类:</label>
  123. <select id="subcategory-select" class="styled-input form-control select2-multiple" multiple placeholder="请选择或输入搜索">
  124. <option value="">请选择子类别</option>
  125. </select>
  126. </div>
  127. </div>
  128. </form>
  129. <!-- 假设这是你的 HTML 结构class="table table-bordered" -->
  130. <div class="ibox" id="data-ibox" style="overflow: auto;">
  131. <div class="ibox-title" style="width: 100%;">药品登记列表</div>
  132. <table class="fixed-layout-table table1" id="drugInfoTable">
  133. <thead>
  134. <tr>
  135. <th>操作+<a type="button" class="btn btn-primary btn-sm" onclick="selectUsersToParentCallBack2()">添加药品</a></th>
  136. <th>药品编码</th>
  137. <th>药品名</th>
  138. <th class="hidden-column">通用名</th>
  139. <th>规格</th>
  140. <th class="hidden-column">厂家简称</th>
  141. <th class="hidden-column">给药方式</th>
  142. <th class="hidden-column">是否随访管理品</th>
  143. <th class="hidden-column">是否冷链管理品</th>
  144. <th class="hidden-column">是否登记管理品</th>
  145. <th class="hidden-column">是否慈善援助管理品</th>
  146. <th class="hidden-column">包装</th>
  147. <th class="is-required">取药数量(购药数量)</th>
  148. <th class="is-required">单次剂量数</th>
  149. <th class="is-required">单次剂量单位</th>
  150. <th class="is-required">用药频次</th>
  151. <th class="is-required">购药包装单位</th>
  152. <th>D值品用药天数</th>
  153. </tr>
  154. </thead>
  155. <tbody>
  156. <!-- 数据行将被插入到这里 -->
  157. </tbody>
  158. </table>
  159. </div>
  160. </div>
  161. <div class="modal inmodal" id="myModal" tabindex="-1" role="dialog" aria-hidden="true">
  162. <div class="modal-dialog">
  163. <form class="form-horizontal" id="form-budan-add">
  164. <div class="modal-content animated bounceInRight">
  165. <div class="modal-header">
  166. <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">关闭</span></button>
  167. <h2 class="modal-title">药师审核</h2>
  168. </div>
  169. <div class="modal-body">
  170. <div class="customize-search-form">
  171. <div class="customize-form-group">
  172. <label>审核药师姓名:</label>
  173. <select id="pharmacistNameSelect" name="pharmacistName" class="styled-input" style="width: 200px; height: 35px;">
  174. <option value="" disabled selected>请选择</option>
  175. </select>
  176. <span id="pharmacistVerified" class="verified-symbol" style="display:none;">✓</span>
  177. </div>
  178. <div id="passwordGroup" class="customize-form-group" style="display:none;">
  179. <label>密码:</label>
  180. <input type="password" placeholder="请输入密码" class="styled-input" style="width: 200px; height: 35px;" id="password" name="password">
  181. <button type="button" class="btn btn-success btn-sm" id="verifyPasswordBtn">确定</button>
  182. </div>
  183. <div id="checkView" style="display:none;">
  184. <div class="customize-form-group">
  185. <label>审核结果:</label>
  186. <div>
  187. <label><input type="radio" name="checkResult" value="1"> 通过</label>
  188. <label><input type="radio" name="checkResult" value="0"> 不通过</label>
  189. </div>
  190. </div>
  191. <div class="customize-form-group">
  192. <label>审核意见:</label>
  193. <input type="text" placeholder="请输入说明" class="styled-input" style="width: 200px; height: 35px;" id="remarks" name="remarks">
  194. </div>
  195. </div>
  196. </div>
  197. </div>
  198. <div class="modal-footer">
  199. <button type="button" class="btn btn-white" data-dismiss="modal">关闭</button>
  200. <button type="button" class="btn btn-primary" onclick="submitReview()">提交</button>
  201. </div>
  202. </div>
  203. </form>
  204. </div>
  205. </div>
  206. <div class="main-content">
  207. <div class="col-sm-offset-5 col-sm-10">
  208. <button type="button" class="btn btn-sm btn-primary" onclick="submitHandler()"><i class="fa fa-check"></i>提 交</button>&nbsp;
  209. <button type="button" class="btn btn-sm btn-danger" onclick="closeItem()"><i class="fa fa-reply-all"></i>关 闭 </button>
  210. </div>
  211. </div>
  212. </div>
  213. <th:block th:include="include :: footer" />
  214. <th:block th:include="include :: select2-js" />
  215. <th:block th:include="include :: bootstrap-fileinput-js" />
  216. <th:block th:include="include :: bootstrap-table-fixed-columns-js" />
  217. <th:block th:include="include :: layout-latest-js" />
  218. <script th:inline="javascript">
  219. var editFlag = [[${@permission.hasPermi('dtp:RecipeRegister:edit')}]];
  220. var removeFlag = [[${@permission.hasPermi('dtp:RecipeRegister:remove')}]];
  221. var prefix_recipe = ctx + "dtp/recipe";
  222. var prefix_yppz= ctx + "yppz/drugConfig";
  223. var prefix_configInfo= ctx + "dtp/configInfo";
  224. var prefix_pmService = ctx + "dtp/pmService";
  225. var hzparam =[];
  226. var hzparam1 ={};
  227. var openId='';
  228. var data;
  229. var shangci=false;
  230. var shangcigyList=[];
  231. var dataList=[];
  232. var selectdataList=[];
  233. var prescriptionNumber;
  234. $(document).ready(function() {
  235. // 获取所有的输入元素(input, textarea, select)
  236. var $inputs = $('form').find('input, textarea, select').filter(':visible');
  237. $inputs.each(function(index) {
  238. $(this).on('keydown', function(e) {
  239. if (e.key === "Enter" || e.keyCode === 13) {
  240. e.preventDefault(); // 阻止默认行为(例如提交表单)
  241. // 找到当前输入框的索引
  242. var currentIndex = $inputs.index(this);
  243. // 如果不是最后一个输入框,则聚焦下一个输入框
  244. if (currentIndex < $inputs.length - 1) {
  245. $inputs.eq(currentIndex + 1).focus();
  246. } else {
  247. // 如果是最后一个输入框,可以选择提交表单或不做任何事情
  248. // $(this).closest('form').submit();
  249. }
  250. }
  251. });
  252. });
  253. // 监听选择变化
  254. $(document).on('change', 'input[name="selectPatient"]', function() {
  255. // 移除所有行的 'selected' 类
  256. $('#patient-table tbody tr').removeClass('selected');
  257. // 获取当前选中的行并添加 'selected' 类
  258. var selectedRow = $(this).closest('tr');
  259. selectedRow.addClass('selected');
  260. // 获取选中的患者对象
  261. var selectedPatient = getSelectedPatient();
  262. if (selectedPatient) {
  263. // 调用 getLastRecipe 方法,传入患者的 ID
  264. var patientId = selectedPatient.id;
  265. getLastRecipe(patientId);
  266. }
  267. });
  268. // 初始化 Select2 插件
  269. $('#hospital-select').select2({
  270. placeholder: "请选择或直接输入搜索",
  271. //allowClear: true //在输入框最后 有一个 删除所有的X 但是会出现 第一个删除出现问题有空格
  272. });
  273. // Listen for the 'select2:select' event
  274. $('#hospital-select').on('select2:select', function(e) {
  275. var clearSpan = $('.select2-selection-clear');
  276. if (clearSpan.length > 0) {
  277. clearSpan.remove();
  278. }
  279. });
  280. // 发送 AJAX 请求获取疾病大类数据
  281. $.ajax({
  282. url: prefix_configInfo+'/dtpHospitalList',
  283. method: 'POST',
  284. dataType: 'json',
  285. success: function(data) {
  286. var options = $('#hospital-select');
  287. // 清空已有选项(除了第一个默认选项)
  288. options.find('option').not(':first').remove();
  289. $('<option>', {
  290. value: '',
  291. text : '请选择疾病医院'
  292. }).appendTo(options);
  293. // 遍历返回的数据并添加选项
  294. $.each(data.value, function(index, item) {
  295. $('<option>', {
  296. value: item.id,
  297. text : item.standardName
  298. }).appendTo(options);
  299. });
  300. // 重新初始化 Select2 以反映新的选项
  301. options.trigger('change');
  302. },
  303. error: function(xhr, status, error) {
  304. console.error("Failed to load disease categories:", error);
  305. }
  306. });
  307. var clearSpan = $('.select2-selection-clear');
  308. // 初始化 Select2 插件
  309. $('#category-select').select2({
  310. placeholder: "请选择或直接输入搜索",
  311. //allowClear: true //在输入框最后 有一个 删除所有的X 但是会出现 第一个删除出现问题有空格
  312. });
  313. // Listen for the 'select2:select' event
  314. $('#category-select').on('select2:select', function(e) {
  315. var clearSpan = $('.select2-selection-clear');
  316. if (clearSpan.length > 0) {
  317. clearSpan.remove();
  318. }
  319. });
  320. // 发送 AJAX 请求获取疾病大类数据
  321. $.ajax({
  322. url: prefix_recipe+'/typeDate',
  323. method: 'GET',
  324. dataType: 'json',
  325. success: function(data) {
  326. var options = $('#category-select');
  327. // 清空已有选项(除了第一个默认选项)
  328. options.find('option').not(':first').remove();
  329. $('<option>', {
  330. value: '',
  331. text : '请选择疾病类型'
  332. }).appendTo(options);
  333. // 遍历返回的数据并添加选项
  334. $.each(data.value, function(index, item) {
  335. $('<option>', {
  336. value: item.id,
  337. text : item.categoryName
  338. }).appendTo(options);
  339. });
  340. // 重新初始化 Select2 以反映新的选项
  341. options.trigger('change');
  342. },
  343. error: function(xhr, status, error) {
  344. console.error("Failed to load disease categories:", error);
  345. }
  346. });
  347. // 初始化子类别下拉框
  348. $('#subcategory-select').select2({
  349. placeholder: "请选择或直接输入搜索",
  350. //allowClear: true
  351. });
  352. // 监听第一个下拉框的选择事件
  353. $('#category-select').on('change', function() {
  354. var selectedCategory = $(this).val();
  355. if (selectedCategory.length > 0) {
  356. loadSubcategories(selectedCategory);
  357. } else {
  358. // 如果没有选择任何项,清空子类别下拉框
  359. $('#subcategory-select').find('option').not(':first').remove();
  360. $('#subcategory-select').trigger('change');
  361. }
  362. });
  363. // 监听医院下拉框的选择事件
  364. });
  365. function loadSubcategories(categoryId) {
  366. // 模拟从服务器获取子类别数据
  367. $.ajax({
  368. url: prefix_recipe+'/typeDate2?jbtype=' + categoryId, // 假设 ctx 是你的上下文路径
  369. method: 'GET',
  370. dataType: 'json',
  371. success: function(data) {
  372. var options = $('#subcategory-select');
  373. // 清空已有选项(除了第一个默认选项)
  374. options.find('option').not(':first').remove();
  375. // 遍历返回的数据并添加选项
  376. $.each(data.value, function(index, item) {
  377. $('<option>', {
  378. value: item.ida,
  379. text : item.categoryNamea
  380. }).appendTo(options);
  381. });
  382. // 重新初始化 Select2 以反映新的选项
  383. options.trigger('change');
  384. },
  385. error: function(xhr, status, error) {
  386. console.error("Failed to load subcategories:", error);
  387. }
  388. });
  389. }
  390. // 将后端返回的数据填充到表格中
  391. function populatePatientTable(datas) {
  392. var tbody = $('#patient-table tbody');
  393. tbody.empty(); // 清空现有行
  394. datas.forEach(function(patient, index) {
  395. var genderText = patient.gender === 1 ? '男' : '女';
  396. var row = `
  397. <tr data-index="${index}">
  398. <td><input type="radio" name="selectPatient" value="${index}"></td>
  399. <td>${patient.id}</td>
  400. <td>${patient.name}</td>
  401. <td>${genderText}</td>
  402. <td>${patient.age || '-'}</td>
  403. <td>${patient.documentType || '-'}</td>
  404. <td>${patient.documentNumber || '-'}</td>
  405. <td>${patient.disease || '-'}</td>
  406. <td>${patient.phoneNumber || '-'}</td>
  407. <!-- 添加其他列的数据 -->
  408. </tr>
  409. `;
  410. tbody.append(row);
  411. });
  412. }
  413. // 获取选中的患者数据并存入对象
  414. function getSelectedPatient() {
  415. var selectedRow = $('input[name="selectPatient"]:checked').closest('tr');
  416. if (selectedRow.length === 0) return null;
  417. var index = selectedRow.data('index');
  418. return dataList[index];
  419. }
  420. function getLastRecipe(patientId){
  421. var datas=[];
  422. var data = {
  423. "patientId":patientId,
  424. };
  425. // 初始化表格 getDrugPurchaseList
  426. $.ajax({
  427. cache : true,
  428. type : "POST",
  429. url : prefix_recipe + "/getLastRecipe",
  430. data : data,
  431. async : false,
  432. error : function(request) {
  433. $.modal.alertError("系统错误");
  434. },
  435. success : function(data) {
  436. var shangciObj={};
  437. shangcigyList=data.data.recipeList;
  438. if(data.data.recipeList !=null || data.data.recipeList != undefined){
  439. initTab(datas=data.data.recipeList)
  440. }
  441. if(data.data.recipe!=null){
  442. shangciObj=data.data.recipe;
  443. $('#hospital').val(shangciObj.hospital);
  444. $('#prescribingDoctor').val(shangciObj.prescribingDoctor);
  445. $('#department').val(shangciObj.department);
  446. $('#attendingDoctor').val(shangciObj.attendingDoctor);
  447. }else {
  448. shangciObj={};
  449. $('#hospital').val('');
  450. $('#prescribingDoctor').val('');
  451. $('#department').val('');
  452. $('#attendingDoctor').val('');
  453. }
  454. $.operate.successCallback(data);
  455. }
  456. });
  457. }
  458. function initTab(datas){
  459. var tableId = 'bootstrap-table';
  460. var tableElement = $('#' + tableId);
  461. tableElement.bootstrapTable({
  462. data: datas,
  463. columns : [
  464. {field: 'mdmCode', title: '药品编码', align: 'center'},
  465. {field: 'productName', title: '商品名', align: 'center'},
  466. {field: 'genericName', title: '通用名', align: 'center'},
  467. {field: 'specification', title: '规格', align: 'center'},
  468. {field: 'manufacturerShortName', title: '厂家简称', align: 'center'},
  469. {field: 'administrationMethod', title: '给药方式', align: 'center'},
  470. {field: 'realNameStatus', title: '处方取药数量(包装数)', align: 'center'},
  471. {field: 'singleDoseValue', title: '处方单次剂量数值', align: 'center'},
  472. {field: 'singleDoseUnit', title: '处方单次剂量单位', align: 'center'},
  473. {field: 'dosageFrequency', title: '规范用药频次', align: 'center'},
  474. {field: 'dosageFrequencyDays', title: '用药频次换算使用天数', align: 'center'},
  475. {field: 'dvalueDays', title: 'D值品用药天数', align: 'center'},
  476. {field: 'prescriptionNumber', title: '处方编号', align: 'center'},
  477. // {
  478. // title: '操作',
  479. // align: 'center',
  480. // formatter: function(value, row, index) {
  481. // if (row.id) {
  482. // var actions = [];
  483. // actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="$.operate.view(\'' + row.id + '\')">购药详情</a> ');
  484. // return actions.join('');
  485. // } else {
  486. // return "";
  487. // }
  488. // }
  489. // }
  490. ]
  491. });
  492. }
  493. function getTableData() {
  494. var tableRows = [];
  495. $('#drugInfoTable tbody tr').each(function(index, row) {
  496. var rowData = {
  497. productId: $(row).data('product-id'),
  498. mdmCode: $(row).find('td:eq(1)').text().trim(),
  499. productName: $(row).find('td:eq(2)').text().trim(),
  500. genericName: $(row).find('td:eq(3)').text().trim(),
  501. specification: $(row).find('td:eq(4)').text().trim(),
  502. manufacturerShortName: $(row).find('td:eq(5)').text().trim(),
  503. administrationMethod: $(row).find('td:eq(6)').text().trim(),
  504. followUpItem: $(row).find('td:eq(7)').text().trim(),
  505. coldChainItem: $(row).find('td:eq(8)').text().trim(),
  506. registeredItem: $(row).find('td:eq(9)').text().trim(),
  507. charityAidItem: $(row).find('td:eq(10)').text().trim(),
  508. packaging: $(row).find('td:eq(11)').text().trim(),
  509. packageQuantity: $(row).find('input[name="packageQuantity"]').val(),
  510. singleDoseValue: $(row).find('input[name="singleDoseValue"]').val(),
  511. singleDoseUnit: $(row).find('select[name="singleDoseUnit"]').val(),
  512. dosageFrequency: $(row).find('select[name="dosageFrequency"]').val(),
  513. dosageFrequencyDays: $(row).find('input[name="dosageFrequencyDays"]').val(),
  514. dvalueDays: $(row).find('input[name="dvalueDays"]').val()
  515. };
  516. if (rowData.packageQuantity == ''|| rowData.packageQuantity == null|| rowData.packageQuantity == undefined){
  517. $.modal.alertError("请输入包装数量");
  518. return;
  519. }
  520. if (rowData.singleDoseValue == ''|| rowData.singleDoseValue == null|| rowData.singleDoseValue == undefined){
  521. $.modal.alertError("请输入单次剂量数值");
  522. return;
  523. }
  524. if (rowData.singleDoseUnit == ''|| rowData.singleDoseUnit == null|| rowData.singleDoseUnit == undefined){
  525. $.modal.alertError("请输入单次剂量单位");
  526. return;
  527. }
  528. if (rowData.dosageFrequency == ''|| rowData.dosageFrequency == null|| rowData.dosageFrequency == undefined){
  529. $.modal.alertError("请输入频次");
  530. return;
  531. }
  532. /*if (rowData.dosageFrequencyDays == ''|| rowData.dosageFrequencyDays == null|| rowData.dosageFrequencyDays == undefined){
  533. $.modal.alertError("请输入频次换算使用天数");
  534. return;
  535. }*/
  536. // 将每一行的数据对象添加到数组中
  537. tableRows.push(rowData);
  538. });
  539. return tableRows;
  540. }
  541. function submitHandler() {
  542. prescriptionNumber='';
  543. var prescribingDoctor = $('#prescribingDoctor').val();
  544. if (prescribingDoctor == ''|| prescribingDoctor == null|| prescribingDoctor == undefined){
  545. $.modal.alertError("请输入处方医生");
  546. return;
  547. }
  548. var prescriptionIssueDate = $('#prescriptionIssueDate').val();
  549. if (prescriptionIssueDate == ''|| prescriptionIssueDate == null|| prescriptionIssueDate == undefined){
  550. $.modal.alertError("处方开具日期");
  551. return;
  552. }
  553. // 创建一个 FormData 对象用于提交表单数据
  554. var formData = new FormData();
  555. // 如果有文件上传,例如处方图片和发票图片
  556. // var prescriptionImageUrlInput = $('#prescriptionImageUrl')[0];
  557. // if (prescriptionImageUrlInput.files.length > 0) {
  558. // formData.append('prescriptionImageUrl', prescriptionImageUrlInput.files[0]);
  559. // }
  560. //
  561. // var invoiceImageUrlInput = $('#invoiceImageUrl')[0];
  562. // if (invoiceImageUrlInput.files.length > 0) {
  563. // formData.append('invoiceImageUrl', invoiceImageUrlInput.files[0]);
  564. // }
  565. // 收集患者信息
  566. var patientObj = getSelectedPatient();
  567. if (patientObj) {
  568. console.log("Selected Patient:", patientObj);
  569. // 添加患者信息到 FormData
  570. formData.append('patientId', patientObj.id);
  571. formData.append('patientName', patientObj.name || '');
  572. let gender = patientObj.gender; // 获取表单中的性别值
  573. if (gender ===1) {
  574. gender = 1; // 如果为空,则设置默认值为 '0'
  575. }else{
  576. gender = 0;
  577. }
  578. formData.append('gender', gender);
  579. formData.append('age', patientObj.age);
  580. console.log("PatientObj=" + patientObj);
  581. }else{
  582. $.modal.alertError("请先选择患者");
  583. return;
  584. }
  585. // 收集表单中的其他字段,并将其添加到 FormData 中
  586. $('#dtp-form-newcfxx').find(':input').each(function() {
  587. var $this = $(this);
  588. var name = $this.attr('name');
  589. if (name) { // 确保有 name 属性
  590. var value = $this.val();
  591. if (value !== undefined && value !== null && value !== '') { // 确保值不是空
  592. formData.append(name, value);
  593. }
  594. }
  595. });
  596. var selectedOptionsDL = $('#category-select option:selected');
  597. var selectedOptionsXL = $('#subcategory-select option:selected');
  598. /*var JBDL = selectedOptionsDL.map(function() { // 疾病大类
  599. return $(this).text();
  600. }).get(); // 获取的数据格式 [ "肿瘤治疗并发症与合并症名称", "风湿免疫疾病名称库" ]
  601. var JBXL = selectedOptionsXL.map(function() { // 疾病小类
  602. return $(this).text();
  603. }).get(); // 获取的数据格式 [ "肿瘤治疗并发症与合并症名称", "风湿免疫疾病名称库" ]*/
  604. var selectedDataDL = selectedOptionsDL.map(function() {
  605. return {
  606. id: $(this).val(),
  607. name: $(this).text()
  608. };
  609. }).get(); // 获取的数据格式 [{ id: "2", name: "肿瘤治疗并发症与合并症名称" }, { id: "3", name: "风湿免疫疾病名称库" }]
  610. var selectedDataXL = selectedOptionsXL.map(function() {
  611. return {
  612. id: $(this).val(),
  613. name: $(this).text()
  614. };
  615. }).get(); // 获取的数据格式 [{ id: "2", name: "肿瘤治疗并发症与合并症名称" }, { id: "3", name: "风湿免疫疾病名称库" }]
  616. const DL = JSON.stringify(selectedDataDL);
  617. const XL = JSON.stringify(selectedDataXL);
  618. formData.append('dl', DL);
  619. formData.append('xl', XL);
  620. formData.append('dlanme', DL);
  621. formData.append('xlname', XL);
  622. console.log("DL=" + DL);
  623. console.log("XL=" + XL);
  624. // 将药物数据序列化为 JSON 字符串并添加到 FormData 中
  625. /*var drugData = getTableData(); // 假设此函数正确获取表格数据
  626. if (drugData.length > 0) {
  627. formData.append('drugData', JSON.stringify(drugData));
  628. }else{
  629. $.modal.alertError("请添加药品");
  630. return;
  631. }*/
  632. var tableRows = [];
  633. var falg = true;
  634. $('#drugInfoTable tbody tr').each(function(index, row) {
  635. var rowData = {
  636. productId: $(row).data('product-id'),
  637. mdmCode: $(row).find('td:eq(1)').text().trim(),
  638. productName: $(row).find('td:eq(2)').text().trim(),
  639. genericName: $(row).find('td:eq(3)').text().trim(),
  640. specification: $(row).find('td:eq(4)').text().trim(),
  641. manufacturerShortName: $(row).find('td:eq(5)').text().trim(),
  642. administrationMethod: $(row).find('td:eq(6)').text().trim(),
  643. followUpItem: $(row).find('td:eq(7)').text().trim(),
  644. coldChainItem: $(row).find('td:eq(8)').text().trim(),
  645. registeredItem: $(row).find('td:eq(9)').text().trim(),
  646. charityAidItem: $(row).find('td:eq(10)').text().trim(),
  647. packaging: $(row).find('td:eq(11)').text().trim(),
  648. packageQuantity: $(row).find('input[name="packageQuantity"]').val(),
  649. singleDoseValue: $(row).find('input[name="singleDoseValue"]').val(),
  650. singleDoseUnit: $(row).find('select[name="singleDoseUnit"]').val(),
  651. dosageFrequency: $(row).find('select[name="dosageFrequency"]').val(),
  652. dosageFrequencyDays: $(row).find('input[name="dosageFrequencyDays"]').val(),
  653. dvalueDays: $(row).find('input[name="dvalueDays"]').val(),
  654. dosageMax: $(row).find('input[name="dosageMax"]').val(),
  655. unitMax: $(row).find('input[name="unitMax"]').val(),
  656. dosageMin: $(row).find('input[name="dosageMin"]').val(),
  657. unitMin: $(row).find('input[name="unitMin"]').val(),
  658. dosageNormal: $(row).find('input[name="dosageNormal"]').val(),
  659. unitNormal: $(row).find('input[name="unitNormal"]').val(),
  660. packingValue: $(row).find('input[name="packingValue"]').val(),
  661. packingUnit: $(row).find('input[name="packingUnit"]').val(),
  662. };
  663. if (rowData.packageQuantity == ''|| rowData.packageQuantity == null|| rowData.packageQuantity == undefined){
  664. $.modal.alertError("请输入包装数量");
  665. falg = false;
  666. return falg;
  667. }
  668. if (rowData.singleDoseValue == ''|| rowData.singleDoseValue == null|| rowData.singleDoseValue == undefined){
  669. $.modal.alertError("请输入单次剂量数值");
  670. falg = false;
  671. return falg;
  672. }
  673. if (rowData.singleDoseUnit == ''|| rowData.singleDoseUnit == null|| rowData.singleDoseUnit == undefined){
  674. $.modal.alertError("请选择单次剂量单位");
  675. falg = false;
  676. return falg;
  677. }
  678. if (rowData.dosageFrequency == ''|| rowData.dosageFrequency == null|| rowData.dosageFrequency == undefined){
  679. $.modal.alertError("请选择频次");
  680. falg = false;
  681. return falg;
  682. }
  683. /* 计算 D 值天数*/
  684. var dcnum = rowData.singleDoseValue; // 单次用量
  685. var pcnum = rowData.dosageFrequency; // 用药频次 eg: 一天一次
  686. console.log("单次剂量数值"+dcnum+"频次"+pcnum +" 相乘:"+(dcnum*pcnum));
  687. if((dcnum*pcnum)>rowData.dosageMax){
  688. console.log("单次剂量数值*频次不能大于最大值")
  689. }
  690. if((dcnum*pcnum)<rowData.dosageMin){
  691. console.log("单次剂量数值*频次不能小于最小值")
  692. }
  693. // 计算 D 值
  694. var num = rowData.packageQuantity; // 买药数量
  695. var dnum = (num*rowData.dosageFrequencyDays)/(dcnum*pcnum); // 买药数量 * 包装单位数量 / 频次天数 = D 值天数
  696. console.log("计算D值天数: "+dnum);
  697. rowData.dvalueDays = dnum;
  698. // 将每一行的数据对象添加到数组中
  699. tableRows.push(rowData);
  700. });
  701. if (!falg){
  702. return;
  703. }
  704. if (tableRows.length > 0) {
  705. formData.append('drugData', JSON.stringify(tableRows));
  706. }else{
  707. $.modal.alertError("请添加药品");
  708. return;
  709. }
  710. $.ajax({
  711. cache: false, // 设置为 false 防止缓存
  712. type: "POST",
  713. url: prefix_recipe + "/saveCFDJ",
  714. data: formData,
  715. processData: false, // 告诉 jQuery 不要处理数据(非常重要)
  716. contentType: false, // 告诉 jQuery 不要设置 contentType(非常重要)
  717. async: true, // 异步请求更为推荐,除非有特殊原因需要同步
  718. error: function (request) {
  719. $.modal.alertError("操作失败");
  720. },
  721. success: function (data) {
  722. if(data.data.code==200){
  723. prescriptionNumber = data.data.prescriptionNumber;
  724. openCheckYSJC();
  725. // $.modal.closeTab();
  726. }else{
  727. $.modal.alertError(data.msg);
  728. }
  729. }
  730. });
  731. }
  732. function openCheckYSJC(){
  733. //初始化时加载药师信息
  734. loadPharmacists();
  735. //$.modal.open("药师审核", prefix_pmService+'/openCheckYSJC'); findRevieForList
  736. $('#myModal').modal('show');
  737. // $.modal.closeTab();
  738. }
  739. // 异步加载所有药师信息并填充下拉框
  740. function loadPharmacists() {
  741. $.ajax({
  742. url: prefix_recipe+ "/findRevieForList", // 假设这是获取所有药师的API端点
  743. type: 'POST',
  744. cache: false, // 设置为 false 防止缓存
  745. processData: false, // 告诉 jQuery 不要处理数据(非常重要)
  746. contentType: false, // 告诉 jQuery 不要设置 contentType(非常重要)
  747. async: true, // 异步请求更为推荐,除非有特殊原因需要同步
  748. success: function (data) {
  749. var select = $('#pharmacistNameSelect');
  750. // 清空除了默认选项外的所有选项
  751. select.find('option:not(:first)').remove();
  752. data.data.forEach(function (pharmacist) {
  753. select.append(new Option(pharmacist.pharmacistName, pharmacist.id));
  754. });
  755. },
  756. error: function () {
  757. $.modal.alertError('加载药师信息失败');
  758. }
  759. });
  760. }
  761. // 当选择药师后显示密码输入框
  762. $('#pharmacistNameSelect').change(function () {
  763. var selectedValue = $(this).val();
  764. // 如果选择了具体的药师
  765. if (selectedValue) {
  766. $('#passwordGroup').show();
  767. $('#password').val(''); // 清空密码输入框
  768. $('#checkView').hide(); // 隐藏审核结果部分
  769. $('#pharmacistVerified').hide(); // 隐藏验证成功的符号
  770. } else {
  771. // 如果没有选择任何药师,隐藏所有相关元素
  772. $('#passwordGroup').hide();
  773. $('#checkView').hide(); // 确保在切换药师时隐藏审核结果和意见
  774. $('#pharmacistVerified').hide(); // 隐藏验证成功的符号
  775. $('#password').val(''); // 清空密码输入框
  776. }
  777. });
  778. // 验证药师密码并显示审核结果部分
  779. function verifyPassword() {
  780. var formData = new FormData();
  781. var pharmacistId = $('#pharmacistNameSelect').val();
  782. var password = $('#password').val();
  783. console.log(pharmacistId);
  784. formData.append('id', pharmacistId);
  785. formData.append('reviewPassword', password);
  786. $.ajax({
  787. url: prefix_recipe+"/ReviewCheckInputPassword", // 假设这是验证药师密码的API端点
  788. type: 'POST',
  789. data: formData,
  790. cache: false, // 设置为 false 防止缓存
  791. processData: false, // 告诉 jQuery 不要处理数据(非常重要)
  792. contentType: false, // 告诉 jQuery 不要设置 contentType(非常重要)
  793. async: true, // 异步请求更为推荐,除非有特殊原因需要同步
  794. success: function (data) {
  795. if (data.code === 0) {
  796. $('#checkView').show();
  797. $('#pharmacistVerified').show(); // 显示验证成功的符号
  798. } else {
  799. $.modal.alertError('密码错误');
  800. $('#checkView').hide();
  801. $('#pharmacistVerified').hide(); // 隐藏验证成功的符号
  802. }
  803. },
  804. error: function () {
  805. $.modal.alertError('验证失败');
  806. }
  807. });
  808. }
  809. // 添加点击事件监听器到确认按钮上,用于触发密码验证
  810. $('#verifyPasswordBtn').click(function () {
  811. verifyPassword();
  812. });
  813. // 提交审核信息
  814. function submitReview() {
  815. if ($('#pharmacistNameSelect').val() && $('#password').is(':visible')) {
  816. verifyPassword();
  817. } else {
  818. alert('请选择审核药师并输入密码');
  819. }
  820. // 如果 checkView 显示,则可以提交表单
  821. if ($('#checkView').is(':visible')) {
  822. var formData = new FormData();
  823. // 直接从特定的输入元素中获取值
  824. // 获取审核药师姓名
  825. var reviewingNameOption = $('#pharmacistNameSelect option:selected');
  826. var reviewingName = reviewingNameOption.text(); // 获取选中的选项文本
  827. var reviewStatus = $('input[name="checkResult"]:checked').val(); // 获取选中的审核结果
  828. var remarks = $('#remarks').val();
  829. // 检查是否所有必填项都已填写
  830. if (!reviewingName || !reviewStatus || !prescriptionNumber) {
  831. alert('请确保所有必填项都已填写');
  832. return;
  833. }
  834. // 添加到 formData 中
  835. formData.append("reviewingName", reviewingName);
  836. formData.append("reviewStatus", reviewStatus);
  837. formData.append("prescriptionNumber", prescriptionNumber);
  838. formData.append("remarks", remarks);
  839. $.ajax({
  840. cache: false,
  841. type: "POST",
  842. url: prefix_recipe+'/review', // 这是提交审核信息的API端点
  843. data: formData,
  844. processData: false,
  845. contentType: false,
  846. async: true,
  847. error: function (request) {
  848. $.modal.alertError("操作失败");
  849. },
  850. success: function (data) {
  851. if (data.data.code === 200) {
  852. $('#myModal').modal('hide'); // 关闭弹窗
  853. $.modal.alertSuccess('提交成功');
  854. $.modal.closeTab();
  855. } else {
  856. $.modal.alertError(data.message || "提交失败");
  857. }
  858. }
  859. });
  860. }
  861. }
  862. // callBack获取父窗口方法(方式二)
  863. function selectUsersToParentCallBack2(){
  864. var options = {
  865. title: '添加处方登记药品',
  866. width: 1000,
  867. height: 600,
  868. url: prefix_yppz + '/getAllProduct',
  869. callBack: doSubmit2
  870. };
  871. $.modal.openOptions(options);
  872. }
  873. function doSubmit2(index, layero) {
  874. var rows = layero.find("iframe")[0].contentWindow.selectTableObject();
  875. if (rows.length == 0) {
  876. $.modal.alertWarning("请至少选择一条记录");
  877. return;
  878. }
  879. var tableBody = $('#drugInfoTable tbody');
  880. rows.forEach(function(item) {
  881. // 动态选择所有列并映射到更具描述性的名称
  882. var columnsData = {
  883. productId: item.productId,
  884. productCode: item.productCode,
  885. productName: item.productName,
  886. genericName: item.genericName,
  887. specification: item.specification,
  888. packaging: item.packaging,
  889. manufacturer: item.manufacturer,
  890. manufacturerAbbreviation: item.manufacturerAbbreviation,
  891. productStatus: item.productStatus,
  892. dtpFlag: item.dtpFlag,
  893. isInsuranceDrug: item.isInsuranceDrug,
  894. administrationMethod: item.administrationMethod,
  895. registeredItem: item.registeredItem,
  896. followUpItem: item.followUpItem,
  897. coldChainItem: item.coldChainItem,
  898. flowItem: item.flowItem,
  899. charityAidItem: item.charityAidItem,
  900. dosageMax: item.dosageMax,
  901. unitMax: item.unitMax,
  902. dosageMin: item.dosageMin,
  903. unitMin: item.unitMin,
  904. dosageNormal: item.dosageNormal,
  905. unitNormal: item.unitNormal,
  906. packingValue: item.packingValue,
  907. packingUnit: item.packingUnit,
  908. dvalueDays: item.dvalueDays,
  909. };
  910. // 检查是否已经存在该药品
  911. if (!isProductExist(columnsData.productId)) {
  912. // 向表格中添加一行
  913. var row = `
  914. <tr data-product-id="${columnsData.productId}">
  915. <td><button onclick="deleteRow('${columnsData.productId}')" class="btn btn-danger">删除重选择药品</button></td>
  916. <td>${columnsData.productCode}</td>
  917. <td>${columnsData.productName}</td>
  918. <td class="hidden-column">${columnsData.genericName}</td>
  919. <td>${columnsData.specification}</td>
  920. <td class="hidden-column">${columnsData.manufacturerAbbreviation}</td>
  921. <td class="hidden-column">${columnsData.administrationMethod}</td>
  922. <td class="hidden-column">${columnsData.followUpItem === 1 ? '是' : '否'}</td>
  923. <td class="hidden-column">${columnsData.coldChainItem === 1 ? '是' : '否'}</td>
  924. <td class="hidden-column">${columnsData.registeredItem === 1 ? '是' : '否'}</td>
  925. <td class="hidden-column">${columnsData.charityAidItem === 1 ? '是' : '否'}</td>
  926. <td class="hidden-column">${columnsData.packaging}</td>
  927. <td class="hidden-column"><input name="dosageMax" value="${columnsData.dosageMax}"/></td>
  928. <td class="hidden-column"><input name="unitMax" value="${columnsData.unitMax}"/></td>
  929. <td class="hidden-column"><input name="dosageMin" value="${columnsData.dosageMin}"/></td>
  930. <td class="hidden-column"><input name="unitMin" value="${columnsData.unitMin}"/></td>
  931. <td class="hidden-column"><input name="dosageNormal" value="${columnsData.dosageNormal}"/></td>
  932. <td class="hidden-column"><input name="unitNormal" value="${columnsData.unitNormal}"/></td>
  933. <td class="hidden-column"><input name="packingValue" value="${columnsData.packingValue}"/></td>
  934. <td class="hidden-column"><input name="packingUnit" value="${columnsData.packingUnit}"/></td>
  935. <td> <input name="packageQuantity" id="packageQuantity${columnsData.productId}" placeholder="取药数量(包装数)" class="styled-input" style="width: 130px;" type="number"></td>
  936. <td> <input name="singleDoseValue" id="singleDoseValue${columnsData.productId}" placeholder="单次剂量数值" class="styled-input" style="width: 130px;" type="number"></td>
  937. <td>
  938. <select name="singleDoseUnit" id="singleDoseUnit${columnsData.productId}" class="styled-input" style="width: 130px;" required>
  939. <option value="">请选择</option>
  940. <!--<option value="1">mg</option>
  941. <option value="2">g</option>
  942. <option value="3">片</option>-->
  943. </select>
  944. </td>
  945. <td>
  946. <select name="dosageFrequency" id="dosageFrequency${columnsData.productId}" class="styled-input" style="width: 130px;" required>
  947. <option value="">请选择</option>
  948. <!--<option value="1">一日1次</option>
  949. <option value="2">一日2次</option>
  950. <option value="3">每天1次</option>
  951. <option value="4">每天隔天一次</option>
  952. <option value="5">每周2次</option>-->
  953. </select>
  954. </td>
  955. <td> <input name="dosageFrequencyDays" id="dosageFrequencyDays${columnsData.productId}" placeholder="购药包装单位" class="styled-input" style="width: 100px;" type="number"><span id="ycode${columnsData.productId}"></span></td>
  956. <td> <input name="dvalueDays" id="dvalueDays${columnsData.productId}" placeholder="系统自动计算" class="styled-input" disabled="" style="width: 100px;" type="number"></td>
  957. </tr>
  958. `;
  959. tableBody.append(row);
  960. dataInfo(columnsData.productId);
  961. //bindDosageFrequencyChangeListener(columnsData.productId);
  962. $('#dosageFrequencyDays'+columnsData.productId).val(columnsData.packingValue);
  963. $('#ycode'+columnsData.productId).text(columnsData.packingUnit);
  964. } else {
  965. $.modal.alertWarning(`药品 [ ${columnsData.productName} ] 已经添加了`);
  966. }
  967. });
  968. $.modal.close(index);
  969. }
  970. function dataInfo(productId){
  971. /*<![CDATA[*/
  972. var storeTypes = /*[[${@dict.getType('sys_gxhpz_gg_unitall')}]]*/ [];
  973. /*]]>*/
  974. /*<![CDATA[*/
  975. var pcTypes = /*[[${@dict.getType('sys_select_dtp_ysfw_sfpx')}]]*/ [];
  976. /*]]>*/
  977. // 获取<select>元素
  978. var selectElement = document.getElementById('singleDoseUnit' + productId);
  979. var pcselectElement = document.getElementById('dosageFrequency' + productId);
  980. storeTypes.forEach(function(item, index){
  981. console.log("item"+item.dictLabel);
  982. console.log("dictValue"+item.dictValue);
  983. var option = document.createElement("option");
  984. option.value = item.dictValue;
  985. option.text = item.dictLabel;
  986. selectElement.add(option);
  987. })
  988. pcTypes.forEach(function(item, index){
  989. console.log("item"+item.dictLabel);
  990. console.log("dictValue"+item.dictValue);
  991. var option = document.createElement("option");
  992. option.value = item.dictValue;
  993. option.text = item.dictLabel;
  994. pcselectElement.add(option);
  995. })
  996. }
  997. // 动态绑定用药频次选择事件
  998. function bindDosageFrequencyChangeListener(productId) {
  999. $(`#dosageFrequency${productId}`).on('change', function () {
  1000. debugger
  1001. var selectedValue = $(this).val();
  1002. if (selectedValue) {
  1003. $(`#dosageFrequencyDays${productId}`).val(selectedValue);
  1004. } else {
  1005. $(`#dosageFrequencyDays${productId}`).val('');
  1006. }
  1007. });
  1008. }
  1009. function deleteRow(productId) {
  1010. $.modal.confirm("确认删除该药品吗?", function() {
  1011. // 删除对应行
  1012. $('#drugInfoTable tbody tr[data-product-id="' + productId + '"]').remove();
  1013. });
  1014. }
  1015. function isProductExist(productId) {
  1016. // 检查表格中是否已经存在该药品
  1017. return $('#drugInfoTable tbody tr[data-product-id="' + productId + '"]').length > 0;
  1018. }
  1019. /* 用户管理-新增-选择门店树 */
  1020. function selectDeptTree() {
  1021. var treeId = $("#treeId").val();
  1022. var deptId = $.common.isEmpty(treeId) ? "100" : $("#treeId").val();
  1023. var url = ctx + "system/user/selectDeptTree/" + deptId;
  1024. var options = {
  1025. title: '选择门店',
  1026. width: "380",
  1027. url: url,
  1028. callBack: doSubmit
  1029. };
  1030. $.modal.openOptions(options);
  1031. }
  1032. function doSubmit(index, layero){
  1033. var body = $.modal.getChildFrame(index);
  1034. $("#treeId").val(body.find('#treeId').val());
  1035. $("#treeName").val(body.find('#treeName').val());
  1036. $.modal.close(index);
  1037. }
  1038. function bookbuilding(){
  1039. $.modal.open("快速建档", prefix_pmService+'/archivesAdd');
  1040. }
  1041. function resetPre() {
  1042. resetDate();
  1043. $("#dtp-form-hxcx")[0].reset();
  1044. $("#query").val("");
  1045. }
  1046. function search_hz() {
  1047. var query = $('#query').val().trim();
  1048. // 如果输入为空,清空 dValueId 输入框并停止进一步操作
  1049. if (!query) {
  1050. $('#query').val('');
  1051. return;
  1052. }
  1053. // 使用防抖机制延迟发送请求
  1054. // 发送 AJAX 请求到服务器查询数据
  1055. hzparam={query:query};//模拟微信扫码获取微信openId
  1056. $.ajax({
  1057. cache: true,
  1058. type: "POST",
  1059. url: prefix_pmService+'/slectPatientByNameOrPhoneOrIdCard', // 替换为实际的搜索 URL
  1060. data: hzparam,
  1061. async: false,
  1062. success: function (data) {
  1063. if(data.code==0){
  1064. dataList=[];
  1065. populatePatientTable(data.data);
  1066. dataList=data.data;
  1067. // 如果有且只有一条记录,默认选中这条记录
  1068. if (data.data.length === 1) {
  1069. setTimeout(function() {
  1070. $('input[name="selectPatient"]').first().prop('checked', true).trigger('change');
  1071. }, 0); // 确保DOM已经完全渲染
  1072. }
  1073. if (data.data.length <=0) {
  1074. var tbody = $('#patient-table tbody');
  1075. tbody.empty(); // 清空现有行
  1076. $.modal.confirm("未找到患者 点击确定可快速建档", function() {
  1077. // 快速建档
  1078. bookbuilding();
  1079. });
  1080. }
  1081. // // 如果找到匹配的数据,更新输入框
  1082. // $('#patientId').val(data.data.id);
  1083. // console.log("data111===="+data);
  1084. // $('#patientName').val(data.data.name);
  1085. // var gender = data.data.gender;
  1086. // $('#gender').val(gender === 1 ? '男' : gender === 0 ? '女' : '');
  1087. // $('#age').val(data.data.age);
  1088. // var patientId = data.data.id;
  1089. // if(patientId !='' && patientId != null){
  1090. // //查询出对应患者的上一次处方登记信息
  1091. // getLastRecipe(patientId);
  1092. // }
  1093. }else{
  1094. // // 清空表格中的所有数据行
  1095. // $('#patientId').val('');
  1096. // $('#patientName').val('');
  1097. // $('#gender').val('');
  1098. // $('#age').val('');
  1099. // $('#query').val('');
  1100. // getLastRecipe(0);
  1101. $.modal.alertWarning(`未找到患者 可快速建档`);
  1102. bookbuilding();
  1103. var tbody = $('#patient-table tbody');
  1104. tbody.empty(); // 清空现有行
  1105. }
  1106. },
  1107. error: function(error) {
  1108. // 清空 dValueId 输入框
  1109. $('#query').val('');
  1110. }
  1111. });
  1112. }
  1113. </script>
  1114. <style>
  1115. .ibox {
  1116. width: auto;
  1117. height: 500px;
  1118. overflow: auto; /* 当内容超过指定尺寸时显示滚动条 */
  1119. }
  1120. .fixed-layout-table {
  1121. width: 100%;
  1122. border-collapse: collapse; /* 减少单元格间距 */
  1123. }
  1124. .fixed-layout-table thead th {
  1125. position: sticky;
  1126. top: 0;
  1127. background-color: #f8f9fa; /* 表头背景颜色 */
  1128. z-index: 1;
  1129. }
  1130. /* 隐藏列的样式 */
  1131. .hidden-column {
  1132. display: none;
  1133. }
  1134. .hidden {
  1135. display: none;
  1136. }
  1137. /*.ibox {*/
  1138. /* width: 700px;*/
  1139. /* margin-bottom: 20px;*/
  1140. /* border: 1px solid #e7eaec;*/
  1141. /* border-radius: 4px;*/
  1142. /*}*/
  1143. .ibox-title {
  1144. background-color: #f3f3f4;
  1145. border-bottom: 1px solid #e7eaec;
  1146. padding: 10px 15px;
  1147. font-size: 16px;
  1148. width: 1540px;
  1149. }
  1150. .ibox-content {
  1151. padding: 15px;
  1152. }
  1153. .ibox-content h4 {
  1154. margin-top: 0;
  1155. }
  1156. .form-horizontal .form-group {
  1157. margin-right: 384px;
  1158. margin-left: 3px;
  1159. }
  1160. input[type=file] {
  1161. display: none;
  1162. }
  1163. .form-group {
  1164. margin-bottom: -1px;
  1165. }
  1166. /* 添加一些基础样式 */
  1167. body {
  1168. font-family: Arial, sans-serif;
  1169. }
  1170. /* 使用ID选择器来确保样式仅应用于特定表格 */
  1171. #drugInfoTable {
  1172. /*width: 500px;*/
  1173. border-collapse: collapse;
  1174. }
  1175. /* 使用后代选择器来确保样式仅应用于该表格内的th和td元素 */
  1176. #drugInfoTable th, #drugInfoTable td {
  1177. text-align: left;
  1178. padding: 5px;
  1179. border-bottom: 1px solid #ddd;
  1180. }
  1181. /* 使用后代选择器来确保样式仅应用于该表格内的tr元素 */
  1182. #drugInfoTable tr:nth-child(even) {
  1183. background-color: #f2f2f2;
  1184. }
  1185. /* 修正了宽度设置,因为宽度通常不应该应用于行(tr),而是应用于单元格(td或th) */
  1186. #drugInfoTable tr:nth-child(even) td {
  1187. width: auto; /* 根据内容自动调整宽度 */
  1188. }
  1189. .hidden-column {
  1190. display: none;
  1191. }
  1192. .customize-table {
  1193. width: 100%;
  1194. border-collapse: collapse;
  1195. }
  1196. .customize-table th, .customize-table td {
  1197. border: 1px solid #ddd;
  1198. padding: 8px;
  1199. }
  1200. .customize-table th {
  1201. background-color: #f2f2f2;
  1202. text-align: left;
  1203. }
  1204. .customize-table tr:nth-child(even) {
  1205. background-color: #f9f9f9;
  1206. }
  1207. .customize-table tr:hover {
  1208. background-color: #ddd;
  1209. }
  1210. /* 新增:选中行的样式 */
  1211. .customize-table tr.selected {
  1212. background-color: #a9a9c5;
  1213. color: white; /* 确保文字可见 */
  1214. }
  1215. .verified-symbol {
  1216. color: green;
  1217. font-size: 16px;
  1218. margin-left: 5px;
  1219. }
  1220. </style>
  1221. </body>
  1222. </html>