pharmacy_warehouse.js 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431
  1. //@ sourceURL=pharmacy_warehouse.js
  2. var pharmacyGroupNo = window.localStorage["groupNo"];//药房编码
  3. $(function () {
  4. $('#fyClass').selectpicker('refresh');
  5. $(".selectpicker").selectpicker();
  6. init_daterangepicker();
  7. //$("#pharmacyModal").modal("show");
  8. if(pharmacyGroupNo == null){
  9. return errorMesageSimaple('药房参数未设置,请在发药参数设置中设置');
  10. }
  11. getAll();
  12. $("input").each(function (){
  13. this.onkeydown = function (e) { // 监听键盘事件
  14. let theEvent = window.event || e;
  15. let code = theEvent.keyCode || theEvent.which;
  16. if (code == 13) {//回车事件
  17. $("#btn_search").click(); //触发搜索按钮点击事件
  18. }
  19. }
  20. });
  21. //保存按钮点击事件
  22. $("#btn_save").click(function (t) {
  23. var data= $('#drug_table').bootstrapTable('getData',true);
  24. if(data.length > 0){
  25. saveDrug(data);
  26. }
  27. });
  28. });
  29. //显示请领单详细窗口
  30. function initDrugTable(drawNo) {
  31. var display =$('#btn_save').css('display');
  32. $('#drug_table').bootstrapTable('destroy');
  33. $('#drug_table').bootstrapTable({
  34. url: '/thmz/getYpOutDetlDetail', //请求后台的URL(*)
  35. method: 'GET', //请求方式(*)
  36. toolbar: '#toolbar', //工具按钮用哪个容器
  37. striped: true, //是否显示行间隔色
  38. cache: true, //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
  39. pagination: true, //是否显示分页(*)
  40. sortable: true, //是否启用排序
  41. sortOrder: "asc", //排序方式
  42. queryParams:{'drawNo':drawNo}, //传递参数(*)
  43. sidePagination: "client", //分页方式:client客户端分页,server服务端分页(*)
  44. pageNumber: 1, //初始化加载第一页,默认第一页
  45. pageSize: 10, //每页的记录行数(*)
  46. pageList: [10, 15, 25, 50, 100], //可供选择的每页的行数(*)
  47. search: false, //是否显示表格搜索,此搜索是客户端搜索,不会进服务端,所以,个人感觉意义不大
  48. strictSearch: true,
  49. showColumns: false, //是否显示所有的列
  50. showRefresh: false, //是否显示刷新按钮
  51. minimumCountColumns: 2, //最少允许的列数
  52. clickToSelect: true, //是否启用点击选中行
  53. uniqueId: "ID", //每一行的唯一标识,一般为主键列
  54. showToggle: false, //是否显示详细视图和列表视图的切换按钮
  55. cardView: false, //是否显示详细视图
  56. detailView: false,
  57. //rowStyle:rowStyle,//通过自定义函数设置行样式
  58. ajaxOptions: {
  59. headers: {
  60. 'Accept': 'application/json',
  61. 'Authorization': 'Bearer ' + localStorage.getItem("token")
  62. }
  63. },
  64. columns: [
  65. {
  66. field: 'outDate',
  67. title: '入库日期',
  68. align: "center",
  69. valign: 'middle',
  70. formatter: function (value, row, index) {
  71. return value == null ? "-" : format(value, "yyyy-MM-dd");
  72. }
  73. },{
  74. field: 'drawNo',
  75. title: '领单号',
  76. align: "center",
  77. valign: 'middle'
  78. },{
  79. field: 'name',
  80. title: '药品名',
  81. align: "center",
  82. valign: 'middle'
  83. },
  84. {
  85. field: 'specification',
  86. title: '规格',
  87. align: "center",
  88. valign: 'middle'
  89. },
  90. {
  91. field: 'outAmt',
  92. title: '<span style="color: red">数量</span>',
  93. align: "center",
  94. valign: 'middle',
  95. formatter: function (value, row, index) {
  96. return "<span style='color: red'>"+value+"</span>";
  97. }
  98. },
  99. {
  100. field: 'packRetprice',
  101. title: '零售价',
  102. align: "center",
  103. valign: 'middle'
  104. },
  105. {
  106. field: 'splitPercent',
  107. title: '<span style="color: red">拆零比例</span>',
  108. align: "center",
  109. valign: 'middle',
  110. visible: display == 'none'?false:true,
  111. formatter:function (value, row, index) {
  112. if(value == 0){
  113. return '<span style="color: red">0%</span>'
  114. }else if(value == 1){
  115. return '<span style="color: red">100%</span>'
  116. }
  117. }
  118. }, {
  119. field: 'manufactoryName',
  120. title: '厂家',
  121. align: "center",
  122. valign: 'middle'
  123. }, {
  124. field: 'manuNo',
  125. title: '入库批号',
  126. align: "center",
  127. valign: 'middle'
  128. },{
  129. field: 'effDate',
  130. title: '效期',
  131. align: "center",
  132. valign: 'middle',
  133. formatter: function (value, row, index) {
  134. return value == null ? "-" : format(value, "yyyy-MM-dd");
  135. }
  136. },{
  137. field: 'nationalCode',
  138. title: '医保编码',
  139. align: "center",
  140. valign: 'middle',
  141. formatter: function (value, row, index) {
  142. return value == null ? "-" : value;
  143. }
  144. }
  145. ],
  146. responseHandler: function (res) {
  147. if (res == '401' || res == 401) {
  148. window.location.href = '/thmz/login/view'
  149. return;
  150. }
  151. var ress = eval(res);
  152. if (ress.code == -1) {
  153. errorMesage(res);
  154. return {
  155. "total": 0,//总页数
  156. "rows": {} //数据
  157. };
  158. }
  159. return {
  160. "total": ress.data.length,//总页数
  161. "rows": ress.data //数据
  162. };
  163. },
  164. /**
  165. * @param {点击列的 field 名称} field
  166. * @param {点击列的 value 值} value
  167. * @param {点击列的整行数据} row
  168. * @param {td 元素} $element
  169. */
  170. onClickCell: function(field, value, row, $element) {
  171. if(field == 'splitPercent' && row.serial != '01'){
  172. $element.attr('contenteditable', true);
  173. $element.html(null);
  174. $element.focus();
  175. $element.blur(function() {
  176. var index = $element.parent().data('index');
  177. var tdValue = $element.html();
  178. if(parseFloat(tdValue).toString() != "NaN"){
  179. if(parseFloat(tdValue) != 0 && parseFloat(tdValue) != 100){
  180. saveData(index, field, value);
  181. $element.html(value==1?"100%":"0%");
  182. }else{
  183. saveData(index, field, tdValue==100?1:tdValue);
  184. $element.html(tdValue+"%");
  185. }
  186. }else{
  187. $element.html(value==1?"100%":"0%");
  188. }
  189. })
  190. }
  191. }
  192. });
  193. }
  194. /**
  195. * 修改列数据
  196. * @param index
  197. * @param field
  198. * @param value
  199. */
  200. function saveData(index, field, value) {
  201. $('#drug_table').bootstrapTable('updateCell', {
  202. index: index, //行索引
  203. field: field, //列名
  204. value: value //cell值
  205. })
  206. }
  207. /**
  208. * 药品入库
  209. */
  210. function saveDrug(data) {
  211. $("#btn_save").attr('disabled',true);
  212. $.ajax({
  213. type: "POST",
  214. url: '/thmz/saveYpInDetlYf',
  215. contentType: "application/json;charset=UTF-8",
  216. dataType: "json",
  217. async: false,
  218. headers: {'Accept': 'application/json', 'Authorization': 'Bearer ' + localStorage.getItem("token")},
  219. data: JSON.stringify(data),
  220. success: function (res) {
  221. $("#btn_save").attr('disabled',false);
  222. if (res == '401' || res == 401) {
  223. window.location.href = '/thmz/login/view'
  224. return;
  225. }
  226. if (res.code == 0) {
  227. $("#editModal").modal("hide");
  228. $('#tb_table').bootstrapTable('refresh');
  229. successMesage(res);
  230. } else {
  231. errorMesage(res);
  232. }
  233. }
  234. });
  235. }
  236. /**
  237. * 重置查询表单
  238. */
  239. function resetSearch() {
  240. $("#acceptSignSearch").val(null);
  241. $("#acceptSignSearch").selectpicker('refresh');
  242. $("#outTypeSearch").val(null);
  243. $("#outTypeSearch").selectpicker('refresh');
  244. $("#drawNoSearch").val(null);
  245. $('#reportrange span').html(new Date.format('YYYY-MM-DD') + ' - ' + new Date.format('YYYY-MM-DD'));
  246. }
  247. /**
  248. * 查询列表
  249. */
  250. function getAll() {
  251. $('#tb_table').bootstrapTable("destroy");
  252. $('#tb_table').bootstrapTable({
  253. url: '/thmz/getYpOutDetl', //请求后台的URL(*)
  254. method: 'post', //请求方式(*)
  255. toolbar: '#toolbar', //工具按钮用哪个容器
  256. striped: true, //是否显示行间隔色
  257. cache: false, //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
  258. pagination: true, //是否显示分页(*)
  259. sortable: true, //是否启用排序
  260. sortOrder: "desc", //排序方式
  261. queryParams: queryParams, //传递参数(*)
  262. sidePagination: "server", //分页方式:client客户端分页,server服务端分页(*)
  263. pageNumber: 1, //初始化加载第一页,默认第一页
  264. pageSize: 10, //每页的记录行数(*)
  265. pageList: [10, 15, 25, 50, 100], //可供选择的每页的行数(*)
  266. search: false, //是否显示表格搜索,此搜索是客户端搜索,不会进服务端,所以,个人感觉意义不大
  267. strictSearch: true,
  268. showColumns: false, //是否显示所有的列
  269. showRefresh: false, //是否显示刷新按钮
  270. minimumCountColumns: 2, //最少允许的列数
  271. clickToSelect: true, //是否启用点击选中行
  272. uniqueId: "drawNo", //每一行的唯一标识,一般为主键列
  273. showToggle: false, //是否显示详细视图和列表视图的切换按钮
  274. cardView: false, //是否显示详细视图
  275. detailView: false,
  276. //rowStyle:rowStyle,//通过自定义函数设置行样式
  277. ajaxOptions: {
  278. headers: {
  279. 'Accept': 'application/json',
  280. 'Authorization': 'Bearer ' + localStorage.getItem("token")
  281. }
  282. },
  283. columns: [
  284. {
  285. title: '操作',
  286. field: 'op',
  287. align: "center",
  288. valign: 'middle',
  289. formatter: function (value, row, index) {
  290. var str = '<button type="button" class="registration-no-color-foot-button" title="详细" onclick="ypInPlanDetail(\'' + row.drawNo + '\',\'' + row.acceptSign + '\')"><i class="fa fa-plus"></i></button>';
  291. return str;
  292. }
  293. }, {
  294. field: 'outDate',
  295. title: '出库日期',
  296. align: "center",
  297. valign: 'middle',
  298. formatter: function (value, row, index) {
  299. return value == null ? "-" : format(value, "yyyy-MM-dd HH:mm:ss");
  300. }
  301. }, {
  302. field: 'drawNo',
  303. title: '单号',
  304. align: "center",
  305. valign: 'middle'
  306. },
  307. {
  308. field: 'groupName',
  309. title: '出库库房',
  310. align: "center",
  311. valign: 'middle'
  312. },
  313. {
  314. field: 'outType',
  315. title: '出库类型 ',
  316. align: "center",
  317. valign: 'middle',
  318. formatter: function (value, row, index) {
  319. if(value == 0){
  320. return '出库'
  321. }else if(value == 1){
  322. return '报损'
  323. }else if(value == 2){
  324. return '退库'
  325. }else if(value == 8){
  326. return '盘点'
  327. }
  328. }
  329. },
  330. {
  331. field: 'groupNamePharmacy',
  332. title: '入库药房',
  333. align: "center",
  334. valign: 'middle'
  335. },
  336. {
  337. field: 'acceptSign',
  338. title: '<span style="color: red">状态</span>',
  339. align: "center",
  340. valign: 'middle',
  341. formatter: function (value,row,index) {
  342. return value==0?"<span style='color: red'>未入库</span>":"<span style='color: red'>已入库</span>"
  343. }
  344. },
  345. {
  346. field: 'keeperName',
  347. title: '发药人',
  348. align: "center",
  349. valign: 'middle'
  350. },
  351. {
  352. field: 'drawerName',
  353. title: '请领人',
  354. align: "center",
  355. valign: 'middle'
  356. }
  357. ],
  358. responseHandler: function (res) {
  359. if (res == '401' || res == 401) {
  360. window.location.href = '/thmz/login/view'
  361. return;
  362. }
  363. var ress = eval(res);
  364. if (ress.code == -1) {
  365. if (ress.message != null && ress.message != '') {
  366. new PNotify({
  367. title: '错误提示',
  368. text: ress.message,
  369. type: 'error',
  370. hide: true,
  371. styling: 'bootstrap3'
  372. });
  373. }
  374. return {
  375. "total": 0,//总页数
  376. "rows": {} //数据
  377. };
  378. }
  379. return {
  380. "total": ress.total,//总页数
  381. "rows": ress.data //数据
  382. };
  383. },
  384. });
  385. }
  386. /**
  387. * 构建列表查询参数
  388. * @param params
  389. */
  390. function queryParams(params) {
  391. var rePortRangeArr = getRePortRangeArr();
  392. var temp = { //这里的键的名字和控制器的变量名必须一直,这边改动,控制器也需要改成一样的
  393. pageSize: params.limit, //页面大小
  394. pageIndex: params.offset / params.limit, //页码
  395. beginTime: rePortRangeArr[0],
  396. endTime: rePortRangeArr[1],
  397. drawNo: $("#drawNoSearch").val() == "" ? null : $("#drawNoSearch").val(),
  398. acceptSign: $("#acceptSignSearch").val() == "" ? null : $("#acceptSignSearch").val(),
  399. outType: $("#outTypeSearch").val() == "" ? null : $("#outTypeSearch").val(),
  400. groupNoOut: pharmacyGroupNo
  401. };
  402. return temp;
  403. }
  404. $('#searchText').on('input focus',function(e){
  405. showDrugPopover();
  406. });
  407. //显示请领单详细
  408. function ypInPlanDetail(drawNo,acceptSign) {
  409. $("#btn_save").attr('disabled',false);
  410. $("#editModal").modal();
  411. if(acceptSign == 0){
  412. $("#classTitle").text("入库");
  413. $("#btn_save").show();
  414. }else{
  415. $("#classTitle").text("查看");
  416. $("#btn_save").hide();
  417. }
  418. initDrugTable(drawNo);
  419. };