yf_divide.js 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407
  1. //@ sourceURL=yf_divide.js
  2. var pharmacyGroupNo;//药房编码
  3. $(function () {
  4. $(".selectpicker").selectpicker();
  5. $("#pharmacyModal").modal("show");
  6. //初始化药品查询弹出框
  7. initDrugSearchList();
  8. $('#searchText').on('input focus',function(e){
  9. showDrugPopover();
  10. });
  11. });
  12. //显示查询的药品悬浮窗
  13. function showDrugPopover() {
  14. $('#tb_table_medicine').bootstrapTable('destroy');
  15. $('#tb_table_medicine').bootstrapTable({
  16. url: '/thmz/getYpBaseYfLike', //请求后台的URL(*)
  17. method: 'GET', //请求方式(*)
  18. //toolbar: '#toolbar', //工具按钮用哪个容器
  19. striped: true, //是否显示行间隔色
  20. cache: true, //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
  21. pagination: false, //是否显示分页(*)
  22. sortable: true, //是否启用排序
  23. sortOrder: "asc", //排序方式
  24. queryParams:queryParamsDrugTable, //传递参数(*)
  25. sidePagination: "client", //分页方式:client客户端分页,server服务端分页(*)
  26. pageNumber: 1, //初始化加载第一页,默认第一页
  27. pageSize: 5, //每页的记录行数(*)
  28. pageList: [5, 10, 25, 50, 100], //可供选择的每页的行数(*)
  29. search: false, //是否显示表格搜索,此搜索是客户端搜索,不会进服务端,所以,个人感觉意义不大
  30. strictSearch: true,
  31. showColumns: false, //是否显示所有的列
  32. showRefresh: false, //是否显示刷新按钮
  33. minimumCountColumns: 2, //最少允许的列数
  34. clickToSelect: true, //是否启用点击选中行
  35. uniqueId: "ID", //每一行的唯一标识,一般为主键列
  36. showToggle: false, //是否显示详细视图和列表视图的切换按钮
  37. cardView: false, //是否显示详细视图
  38. detailView: false,
  39. //rowStyle:rowStyle,//通过自定义函数设置行样式
  40. ajaxOptions: {
  41. headers: {
  42. 'Accept': 'application/json',
  43. 'Authorization': 'Bearer ' + localStorage.getItem("token")
  44. }
  45. },
  46. columns: [
  47. {
  48. field: 'chargeCode',
  49. title: '编码',
  50. align: "center",
  51. valign: 'middle'
  52. },{
  53. field: 'name',
  54. title: '药品名',
  55. align: "center",
  56. valign: 'middle'
  57. },
  58. {
  59. field: 'specification',
  60. title: '规格',
  61. align: "center",
  62. valign: 'middle'
  63. },
  64. {
  65. field: 'packRetprice',
  66. title: '单价',
  67. align: "center",
  68. valign: 'middle'
  69. }, {
  70. field: 'stockAmount',
  71. title: '药房库存',
  72. align: "center",
  73. valign: 'middle',
  74. formatter: function (value, row, index) {
  75. return value<1?'<span style="color: red">'+value+'</span>':value;
  76. }
  77. }
  78. ],
  79. onClickRow: function (row, $element) {
  80. $('#searchText').webuiPopover('hide');
  81. var data= $('#add_drug_table').bootstrapTable('getData',true);
  82. for (let i = 0; i <data.length; i++) {
  83. if(data[i].chargeCode == row.chargeCode){
  84. return errorMesageSimaple('该药品已存在');
  85. }
  86. }
  87. $('#tb_table').bootstrapTable('prepend', row);
  88. },
  89. responseHandler: function (res) {
  90. if (res == '401' || res == 401) {
  91. window.location.href = '/thmz/login/view'
  92. return;
  93. }
  94. var ress = eval(res);
  95. if (ress.code == -1) {
  96. errorMesage(res);
  97. return {
  98. "total": 0,//总页数
  99. "rows": {} //数据
  100. };
  101. }
  102. return {
  103. "total": ress.data.length,//总页数
  104. "rows": ress.data //数据
  105. };
  106. }
  107. });
  108. }
  109. /**
  110. * 药品列表查询参数
  111. */
  112. function queryParamsDrugTable() {
  113. var temp = {
  114. groupNo: pharmacyGroupNo,
  115. searchText: $("#searchText").val() == "" ? null : $("#searchText").val(),
  116. };
  117. return temp;
  118. }
  119. /**
  120. * 初始化参数
  121. */
  122. function init() {
  123. pharmacyGroupNo = $("#pharmacyGroupNo").val();
  124. $("#pharmacyModal").modal("hide");
  125. initTable();
  126. initDivide();
  127. }
  128. /**
  129. * 查询列表
  130. */
  131. function initTable() {
  132. $('#tb_table').bootstrapTable('destroy');
  133. $('#tb_table').bootstrapTable({
  134. method: 'GET', //请求方式(*)
  135. toolbar: '#toolbar', //工具按钮用哪个容器
  136. striped: true, //是否显示行间隔色
  137. cache: false, //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
  138. pagination: true, //是否显示分页(*)
  139. sortable: true, //是否启用排序
  140. sortOrder: "asc", //排序方式
  141. singleSelect: true, // 单选checkbox
  142. sidePagination: "client", //分页方式:client客户端分页,server服务端分页(*)
  143. pageNumber: 1, //初始化加载第一页,默认第一页
  144. pageSize: 10, //每页的记录行数(*)
  145. pageList: [10, 20, 40, 100], //可供选择的每页的行数(*)
  146. search: false, //是否显示表格搜索,此搜索是客户端搜索,不会进服务端,所以,个人感觉意义不大
  147. strictSearch: true,
  148. showColumns: false, //是否显示所有的列
  149. showRefresh: false, //是否显示刷新按钮
  150. minimumCountColumns: 2, //最少允许的列数
  151. clickToSelect: true, //是否启用点击选中行
  152. uniqueId: "ID", //每一行的唯一标识,一般为主键列
  153. showToggle: false, //是否显示详细视图和列表视图的切换按钮
  154. cardView: false, //是否显示详细视图
  155. detailView: false,
  156. ajaxOptions: {
  157. headers: {
  158. 'Accept': 'application/json',
  159. 'Authorization': 'Bearer ' + localStorage.getItem("token")
  160. }
  161. },
  162. columns: [
  163. {
  164. field: 'checked',
  165. checkbox: true,
  166. align: "center",
  167. valign: 'middle',
  168. formatter: function (value, row, index) {
  169. if(index == 0){
  170. return {
  171. checked: true//设置选中
  172. };
  173. }
  174. }
  175. },{
  176. field: 'chargeCode',
  177. title: '药品编码',
  178. align: "center",
  179. valign: 'middle'
  180. }, {
  181. field: 'serial',
  182. title: '序号',
  183. align: "center",
  184. valign: 'middle'
  185. }, {
  186. field: 'name',
  187. title: '药品名',
  188. align: "center",
  189. valign: 'middle'
  190. },
  191. {
  192. field: 'specification',
  193. title: '规格',
  194. align: "center",
  195. valign: 'middle'
  196. },
  197. {
  198. field: 'packSize',
  199. title: '包装量',
  200. align: "center",
  201. valign: 'middle'
  202. },
  203. {
  204. field: 'packRetprice',
  205. title: '零售价',
  206. align: "center",
  207. valign: 'middle',
  208. formatter: function (value, row, index) {
  209. return value.toFixed(2);
  210. }
  211. },
  212. {
  213. field: 'stockAmount',
  214. title: '药房库存',
  215. align: "center",
  216. valign: 'middle'
  217. }
  218. ],
  219. onClickRow: function (row) {
  220. var data= $('#tb_table_divide').bootstrapTable('getData',true);
  221. if(data.length == 0){
  222. loadDrugDivide(row.chargeCode);
  223. }else if(data.length > 0 && data[0].chargeCode != row.chargeCode){
  224. loadDrugDivide(row.chargeCode);
  225. }
  226. },
  227. responseHandler: function (res) {
  228. if (res == '401' || res == 401) {
  229. window.location.href = '/thmz/login/view'
  230. return;
  231. }
  232. var ress = eval(res);
  233. if (ress.code == -1) {
  234. errorMesage(res);
  235. return {
  236. "total": 0,//总页数
  237. "rows": {} //数据
  238. };
  239. }
  240. return {
  241. "total": ress.total,//总页数
  242. "rows": ress.data //数据
  243. };
  244. }
  245. });
  246. }
  247. /**
  248. * 初始化分装表格
  249. */
  250. function initDivide() {
  251. $('#tb_table_divide').bootstrapTable('destroy');
  252. $('#tb_table_divide').bootstrapTable({
  253. method: 'GET', //请求方式(*)
  254. toolbar: '#toolbar_divide', //工具按钮用哪个容器
  255. striped: true, //是否显示行间隔色
  256. cache: false, //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
  257. pagination: true, //是否显示分页(*)
  258. sortable: true, //是否启用排序
  259. sortOrder: "asc", //排序方式
  260. singleSelect: true, // 单选checkbox
  261. sidePagination: "client", //分页方式:client客户端分页,server服务端分页(*)
  262. pageNumber: 1, //初始化加载第一页,默认第一页
  263. pageSize: 10, //每页的记录行数(*)
  264. pageList: [10, 20, 40, 100], //可供选择的每页的行数(*)
  265. search: false, //是否显示表格搜索,此搜索是客户端搜索,不会进服务端,所以,个人感觉意义不大
  266. strictSearch: true,
  267. showColumns: false, //是否显示所有的列
  268. showRefresh: false, //是否显示刷新按钮
  269. minimumCountColumns: 2, //最少允许的列数
  270. clickToSelect: true, //是否启用点击选中行
  271. uniqueId: "ID", //每一行的唯一标识,一般为主键列
  272. showToggle: false, //是否显示详细视图和列表视图的切换按钮
  273. cardView: false, //是否显示详细视图
  274. detailView: false,
  275. ajaxOptions: {
  276. headers: {
  277. 'Accept': 'application/json',
  278. 'Authorization': 'Bearer ' + localStorage.getItem("token")
  279. }
  280. },
  281. columns: [
  282. {
  283. field: 'chargeCode',
  284. title: '药品编码',
  285. align: "center",
  286. visible:false,
  287. valign: 'middle'
  288. }, {
  289. field: 'serial',
  290. title: '序号',
  291. align: "center",
  292. valign: 'middle'
  293. }, {
  294. field: 'name',
  295. title: '药品名',
  296. align: "center",
  297. valign: 'middle'
  298. },
  299. {
  300. field: 'specification',
  301. title: '新包装规格',
  302. align: "center",
  303. valign: 'middle'
  304. },
  305. {
  306. field: 'packSize',
  307. title: '新包装量',
  308. align: "center",
  309. valign: 'middle'
  310. },
  311. {
  312. field: 'amount',
  313. title: '分装量',
  314. align: "center",
  315. valign: 'middle'
  316. },
  317. {
  318. field: 'oldAmount',
  319. title: '参与原包装数量',
  320. align: "center",
  321. valign: 'middle'
  322. }
  323. ],
  324. /**
  325. * @param {点击列的 field 名称} field
  326. * @param {点击列的 value 值} value
  327. * @param {点击列的整行数据} row
  328. * @param {td 元素} $element
  329. */
  330. onClickCell: function(field, value, row, $element) {
  331. if(field == 'oldAmount'){
  332. $element.attr('contenteditable', true);
  333. $element.html(null);
  334. $element.focus();
  335. $element.blur(function() {
  336. var index = $element.parent().data('index');
  337. var tdValue = $element.html();
  338. if(parseFloat(tdValue).toString() != "NaN"){
  339. saveCellData($('#tb_table_divide'), index, field, tdValue);
  340. let amount = 0;
  341. if(row.serial == '01'){
  342. amount = parseFloat(tdValue)*row.packSize;
  343. }else{
  344. amount = parseFloat(tdValue)/row.packSize;
  345. }
  346. saveCellData($('#tb_table_divide'), index,'amount', amount);
  347. }else{
  348. $element.html(null);
  349. }
  350. })
  351. }
  352. },
  353. responseHandler: function (res) {
  354. if (res == '401' || res == 401) {
  355. window.location.href = '/thmz/login/view'
  356. return;
  357. }
  358. var ress = eval(res);
  359. if (ress.code == -1) {
  360. errorMesage(res);
  361. return {
  362. "total": 0,//总页数
  363. "rows": {} //数据
  364. };
  365. }
  366. return {
  367. "total": ress.total,//总页数
  368. "rows": ress.data //数据
  369. };
  370. }
  371. });
  372. }
  373. /**
  374. * 加载药品编码所有规格信息
  375. * @param chargeCode
  376. */
  377. function loadDrugDivide(chargeCode) {
  378. $.ajax({
  379. type: "GET",
  380. url: '/thmz/getYpByChargeCodeAndGroupNo',
  381. contentType: "application/json;charset=UTF-8",
  382. dataType: "json",
  383. headers: {'Accept': 'application/json', 'Authorization': 'Bearer ' + localStorage.getItem("token")},
  384. data: {
  385. chargeCode:chargeCode,
  386. groupNo:pharmacyGroupNo
  387. },
  388. success: function (res) {
  389. if (res == '401' || res == 401) {
  390. window.location.href = '/thmz/login/view'
  391. return;
  392. }
  393. if (res.code == 0) {
  394. $('#tb_table_divide').bootstrapTable('prepend', res.data);
  395. } else {
  396. errorMesage(res);
  397. }
  398. }
  399. });
  400. }