utils.js 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821
  1. const qs = require('qs');
  2. const $ = require('jquery');
  3. const axios = require('axios');
  4. var Utils = require('./rePromise');
  5. require("./modal.js")
  6. const {
  7. ywCheckApi
  8. } = require('./api.js');
  9. const {
  10. contains
  11. } = require('jquery');
  12. require('./scrollBar.js');
  13. const baseUrl = '' //'http://192.168.3.184:5859' //'http://192.168.2.236:5858' //'http://192.168.2.236:5858';//
  14. //页面映射
  15. const pageMap = {
  16. 'YH-KZT': 'console.html',
  17. 'YH-KZTKS': 'deptConsole.html',
  18. 'YH-JCSJWH-MKSJWH': 'moduleManager.html',
  19. 'YH-JCSJWH-TMSJWH': 'itemManager.html',
  20. 'YH-BLZK-ZKPF': 'qcList.html',
  21. 'YH-BLZK-ZKPFKS': 'qcListDept.html',
  22. 'YH-BLZK-ZKPFGR': 'qcListPerson.html',
  23. 'YH-TJFX': 'statistics.html',
  24. 'YH-QXGL-YHGL': 'userManager.html',
  25. 'YH-QXGL-JSGL': 'roleManager.html',
  26. 'YH-KSZR-GMKQXZB_XQ': 'mukuai.html?from=2',
  27. 'YH-KSZR-TMQXZB_XQ': 'singleVeto.html?from=2&special=1',
  28. 'YH-ZKK-GMKQXZB_XQ': 'mukuaiControl.html?from=1',
  29. 'YH-ZKK-TMQXZB_XQ': 'singleVeto.html?from=1&special=1',
  30. 'YH-YCSJJK': 'abnormal.html',
  31. 'YH-ZKK-KSPJZYTS_XQ': 'dayDetail.html',
  32. 'YH-ZKK-KSPJZYHF_XQ': 'payDetail.html',
  33. 'YH-ZKK-GKSQXZB': 'deptScoreDetailControl.html',
  34. 'YH-ZKK-GKSZKPJF_XQ': 'deptScoreDetailControl.html',
  35. 'YH-JCSJWH': 'deptScoreDetailControl.html',
  36. 'YH-ZKK-GKSQXZB_XQ': 'deptScoreDetailControl.html',
  37. 'YH-KSZR-KSQXZB_XQ': 'deptScoreDetailControlDept.html?from=2',
  38. 'YH-ZKK-GKSJJBLZB_XQ': 'jiaji.html',
  39. 'YH-ZKK-BASYHGLZB_XQ': 'partDetailControl.html',
  40. 'YH-KSZR-BASYHGLZB_XQ': 'partDetailControlDept.html',
  41. 'YH-ZKK-ZKHCTJ': 'checkControl.html',
  42. 'YH-KSZR-ZKHCTJ_XQ': 'checkControlDept.html',
  43. 'YH-KSZR-SXXXGTJ_XQ': 'uncorrectedCasesStatisticsDept.html',
  44. 'YH-KSZR-31TZRYRS_XQ': 'readmissionDept.html',
  45. 'YH-KSZR-ZMBLJCS_XQ': 'uncorrectedCopyDept.html',
  46. 'YH-KSZR-YXBLJCS_XQ': 'uncorrectedCopyDept.html',
  47. 'YH-JCSJWH-ZKLXWH': 'assertType.html',
  48. 'YH-BLZK-ZKPFYLZ': 'qcListDocteam.html',
  49. 'YH-ZKK-GJTMQXZB': 'keyItemFlawControl.html',
  50. 'YH-ZKK-BASYHGLYSZB_XQ': 'qualifiedPhysician.html',
  51. 'YH-KSZR-BASYHGLYSZB_XQ': 'deptQualifiedPhysician.html',
  52. 'YH-ZKK-CYRSTJ': 'qcListOutHospital.html',
  53. 'YH-ZKK-RYRSTJ': 'qcListOutHospital.html?inner=2',
  54. 'YH-ZKK-WZGBLTJ': 'uncorrectedCasesStatistics.html',
  55. 'YH-ZKK-31TZRYRS': 'readmission.html',
  56. 'YH-ZKK-YXBLJCB': 'uncorrectedCopy.html',
  57. 'YH-ZKK-ZMBLJCB': 'uncorrectedCopy.html',
  58. 'YH-KSZR-GJTMQXZB_XQ': 'keyItemFlawControlDept.html',
  59. 'YH-KSZR-CYRSTJ_XQ': 'qcListOutHospitalDept.html?from=2',
  60. 'YH-KSZR-RYRSTJ_XQ': 'qcListOutHospitalDept.html?inner=2&from=2',
  61. 'YH-ZKK-BLZK_XQ': 'qcListYw.html',
  62. 'YH-KSZR-BLZK_XQ': 'qcListDeptYw.html',
  63. 'YH-ZKHC-SCHCRW': 'creatCheckTask.html', //义乌-生成核查任务
  64. 'YH-ZKHC-FPHCRW': 'allotCheckTask.html', //义乌-分配核查任务
  65. 'YH-ZKHC-HCRWLB': 'checkTaskList.html', //义乌-核查任务列表
  66. 'YH-ZKK-YLZLKZZB_XQ': 'qualityControl.html',
  67. 'YH-SJBJ': 'editableDetail.html', //数据编辑
  68. 'YH-ZKK-TMQXGSTJ': 'improveStatistics.html', //条目缺陷改善统计
  69. "YH-ZKK-LCZKSYTJ": 'useStatistics.html', //临床质控使用统计
  70. 'YH-KSZR-TMQXGSTJ': 'improveStatisticsDept.html', //条目缺陷改善统计(科室)
  71. "YH-KSZR-LCZKSYTJ": 'useStatisticsDept.html', //临床质控使用统计(科室)
  72. };
  73. //导出时间天数
  74. const exportTimeLimit = {
  75. defectTime: 90,
  76. normalTime: 7,
  77. yiwuTime: 30,
  78. };
  79. //重写assign方法
  80. if (typeof Object.assign != 'function') {
  81. Object.assign = function (target) {
  82. 'use strict';
  83. if (target == null) {
  84. throw new TypeError('Cannot convert undefined or null to object');
  85. }
  86. target = Object(target);
  87. for (var index = 1; index < arguments.length; index++) {
  88. var source = arguments[index];
  89. if (source != null) {
  90. for (var key in source) {
  91. if (Object.prototype.hasOwnProperty.call(source, key)) {
  92. target[key] = source[key];
  93. }
  94. }
  95. }
  96. }
  97. return target;
  98. };
  99. }
  100. window.console =
  101. window.console ||
  102. (function () {
  103. var c = {};
  104. c.log = c.warn = c.debug = c.info = c.error = c.time = c.dir = c.profile = c.clear = c.exception = c.trace = c.assert = function () { };
  105. return c;
  106. })();
  107. const getUrlArgObject = function getQueryString(name) {
  108. var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i');
  109. var reg_rewrite = new RegExp('(^|/)' + name + '/([^/]*)(/|$)', 'i');
  110. var r = window.location.search.substr(1).match(reg);
  111. var q = window.location.pathname.substr(1).match(reg_rewrite);
  112. if (r != null) {
  113. return decodeURIComponent(r[2]);
  114. } else if (q != null) {
  115. return decodeURIComponent(q[2]);
  116. } else {
  117. return null;
  118. }
  119. };
  120. const getUrlArgObjectNew = function (name, srcUrl) {
  121. if (srcUrl.indexOf('?') == -1) {
  122. return '';
  123. }
  124. var r = srcUrl.split('?')[1].split('&'),
  125. obj = {};
  126. for (let i = 0; i < r.length; i++) {
  127. let tmp = r[i].split('=');
  128. obj[tmp[0]] = tmp[1];
  129. }
  130. return obj[name];
  131. };
  132. window.abortAjax = '';
  133. //显示登出提示:被挤和过期
  134. function alertQuitPop(msg, type) {
  135. localStorage.removeItem('accessToken')
  136. console.log('token已清除utils')
  137. if (type) { //父窗口请求登出
  138. $.alerModal({
  139. gobackBtn: true,
  140. title: "提示",
  141. type: "modal",
  142. width: '470',
  143. time: 1000,
  144. cancalText: '我知道了',
  145. sureBtn: false,
  146. message: msg || '登录过期',
  147. callback: function () {
  148. //alert('跳回登录2')
  149. // localStorage.removeItem('accessToken')
  150. // if (window.parent) {
  151. // window.parent.window.location.href = 'login.html'
  152. // } else {
  153. // window.location.href = 'login.html'
  154. // }
  155. window.location.href = 'login.html'
  156. }
  157. });
  158. } else { //子窗口请求登出
  159. const dialogmessage = {
  160. iframemessage: 1,
  161. data: jsonres.msg
  162. }
  163. window.parent.postMessage(JSON.stringify(dialogmessage), '*')
  164. }
  165. }
  166. const post = function (url, data, opts) {
  167. let isPlacefile = getCookie('isPlacefile') || 1;
  168. const token = localStorage.getItem('accessToken');
  169. if (!token && window.location.href.indexOf('login') == -1) {
  170. setCookie('behosDateStart', '');
  171. setCookie('behosDateEnd', '');
  172. //alert('无token判断,跳回登录')
  173. // window.location.href = '../login.html';
  174. }
  175. for (let i = 0; i < $('.typeFilter').children().length; i++) {
  176. if (
  177. $('.typeFilter')
  178. .children()
  179. .eq(i)
  180. .html() == '出院日期:' &&
  181. isPlacefile == 0
  182. ) {
  183. $('.typeFilter')
  184. .children()
  185. .eq(i)
  186. .html('入院日期:');
  187. }
  188. }
  189. let need = window.location.href.indexOf('localhost') != -1;
  190. return new Utils((resolve, reject) => {
  191. abortAjax = $.ajax({
  192. method: 'post',
  193. url: (need ? baseUrl : '') + url,
  194. async: true,
  195. cache: false,
  196. processData: false,
  197. data: (opts && opts.needqs) ? qs.stringify(data) : JSON.stringify(Object.assign({}, data, {
  198. isPlacefile: isPlacefile
  199. })),
  200. contentType: 'application/json; charset=UTF-8',
  201. beforeSend: function (xmlHttp) {
  202. xmlHttp.setRequestHeader('If-Modified-Since', '0');
  203. xmlHttp.setRequestHeader('Cache-Control', 'no-cache');
  204. xmlHttp.setRequestHeader('Authorization', token ? 'Bearer ' + token : '');
  205. },
  206. success: function (res) {
  207. const json = res
  208. let jsonres = null
  209. if (typeof (json) === 'string') {
  210. jsonres = JSON.parse(json)
  211. } else {
  212. jsonres = {
  213. ...json
  214. }
  215. }
  216. let dialogcode = jsonres.code === '10020011' || jsonres.code === '10020012'
  217. if (jsonres.code && dialogcode && (self == top)) {
  218. localStorage.removeItem('accessToken')
  219. delCookie('accessToken')
  220. console.log('token已清除1')
  221. $.alerModal({
  222. gobackBtn: true,
  223. title: "提示",
  224. type: "modal",
  225. width: '470',
  226. time: 1000,
  227. cancalText: '我知道了',
  228. sureBtn: false,
  229. message: jsonres.msg || '登录过期',
  230. callback: function () {
  231. //alert('跳回登录2')
  232. // localStorage.removeItem('accessToken')
  233. // if (window.parent) {
  234. // window.parent.window.location.href = 'login.html'
  235. // } else {
  236. // window.location.href = 'login.html'
  237. // }
  238. window.location.href = 'login.html'
  239. }
  240. });
  241. } else if (jsonres.code && dialogcode && (self != top)) {
  242. localStorage.removeItem('accessToken')
  243. delCookie('accessToken')
  244. console.log('token已清除2')
  245. const dialogmessage = {
  246. iframemessage: 1,
  247. data: jsonres.msg
  248. }
  249. window.parent.postMessage(JSON.stringify(dialogmessage), '*')
  250. } else if (error.status === '10020013') {
  251. $.alerModal({
  252. "message": '登录异常',
  253. type: "tip",
  254. time: '1000',
  255. isFather: true,
  256. fatherWrapper: $("#mainBox", parent.document)
  257. });
  258. window.location.href = 'login.html'
  259. }
  260. resolve({
  261. data: res
  262. });
  263. },
  264. error: function (error) {
  265. const errorCode = {
  266. ...error.responseJSON
  267. }
  268. //const wd = window.parent.window || window;
  269. // if (jsonres.code && (jsonres.code === '10020011' || jsonres.code === '00020007') && (self != top)) {
  270. // let dialog = 'true'
  271. // window.parent.postMessage(dialog, '*')
  272. // }
  273. let dialogcode2 = errorCode.code === '10020011' || errorCode.code === '10020012'
  274. if (errorCode.code && dialogcode2 && (self == top)) {
  275. localStorage.removeItem('accessToken')
  276. delCookie('accessToken')
  277. console.log('token已清除3')
  278. $.alerModal({
  279. gobackBtn: true,
  280. title: "提示",
  281. type: "modal",
  282. width: '470',
  283. time: 1000,
  284. cancalText: '我知道了',
  285. sureBtn: false,
  286. message: errorCode.msg || '登录过期',
  287. callback: function () {
  288. //alert('跳回登录1')
  289. // if (window.parent) {
  290. // window.parent.window.location.href = 'login.html'
  291. // } else {
  292. // }
  293. window.location.href = 'login.html'
  294. }
  295. });
  296. } else {
  297. if (errorCode.code && dialogcode2 && (self != top)) {
  298. localStorage.removeItem('accessToken')
  299. delCookie('accessToken')
  300. const dialogmessage = {
  301. iframemessage: 1,
  302. data: errorCode.msg
  303. }
  304. window.parent.postMessage(JSON.stringify(dialogmessage), '*')
  305. }
  306. if (error.status === 403 || error.status === 401) {
  307. setCookie('behosDateStart', '');
  308. setCookie('behosDateEnd', '');
  309. if (!token && window.location.href.indexOf('login') == -1) {
  310. //alert('无token判断,跳回登录')
  311. // window.location.href = '../login.html';
  312. } else {
  313. $.alerModal({
  314. "message": "没有该权限",
  315. type: "tip",
  316. time: '1000',
  317. isFather: true,
  318. fatherWrapper: $("#mainBox", parent.document)
  319. });
  320. }
  321. // wd.location.href = "../login.html";
  322. } else if (error.status === 500 || error.status === 501 || error.status === 404) {
  323. $.alerModal({
  324. "message": '接口错误',
  325. type: "tip",
  326. time: '1000',
  327. isFather: true,
  328. fatherWrapper: $("#mainBox", parent.document)
  329. });
  330. // wd.location.href = '../error.html?code=' + error.status;
  331. }
  332. }
  333. reject(error);
  334. },
  335. });
  336. });
  337. };
  338. // 导出
  339. const expJson = (url, data) => {
  340. const token = localStorage.getItem('accessToken');
  341. if (!token && window.location.href.indexOf('login') == -1) {
  342. setCookie('behosDateStart', '');
  343. setCookie('behosDateEnd', '');
  344. window.location.href = '../login.html';
  345. }
  346. let need = window.location.href.indexOf('localhost') != -1;
  347. return axios({
  348. method: 'post',
  349. url: (need ? baseUrl : '') + url,
  350. data: data,
  351. contentType: 'application/vnd.ms-excel',
  352. responseType: 'blob', //必须添加,否则会乱码
  353. headers: {
  354. Authorization: 'Bearer ' + token,
  355. },
  356. });
  357. };
  358. //导出接口返回流下载
  359. function downloadExportedData(data, fileName) {
  360. var blob = new Blob([data], {
  361. type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8',
  362. }); //application/vnd.openxmlformats-officedocument.spreadsheetml.sheet这里表示xlsx类型
  363. var downloadElement = document.createElement('a');
  364. var href = window.URL.createObjectURL(blob); //创建下载的链接
  365. downloadElement.href = href;
  366. downloadElement.download = fileName; //下载后文件名
  367. document.body.appendChild(downloadElement);
  368. downloadElement.click(); //点击下载
  369. document.body.removeChild(downloadElement); //下载完成移除元素
  370. window.URL.revokeObjectURL(href);
  371. }
  372. //判断浏览器是否为Ie8
  373. const isIe8 = function () {
  374. var DEFAULT_VERSION = 8.0;
  375. var ua = navigator.userAgent.toLowerCase();
  376. var isIE = ua.indexOf('msie') > -1;
  377. var safariVersion;
  378. if (isIE) {
  379. safariVersion = ua.match(/msie ([\d.]+)/)[1];
  380. }
  381. if (safariVersion <= DEFAULT_VERSION) {
  382. return true;
  383. }
  384. };
  385. const setCookie = function (name, value) {
  386. let Days = 30;
  387. let exp = new Date();
  388. exp.setTime(exp.getTime() + Days * 24 * 60 * 60 * 1000);
  389. document.cookie = name + '=' + escape(value) + ';expires=' + exp.toGMTString();
  390. };
  391. //读取cookies
  392. const getCookie = function (name) {
  393. let arr,
  394. reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)');
  395. if ((arr = document.cookie.match(reg))) return unescape(arr[2]);
  396. else return null;
  397. };
  398. const setLocal = function (name, value) {
  399. localStorage.setItem(name, value);
  400. };
  401. //读取cookies
  402. const getLocal = function (name) {
  403. return localStorage.getItem(name);
  404. };
  405. //删除cookies
  406. const delCookie = function (name) {
  407. let exp = new Date();
  408. exp.setTime(exp.getTime() - 1);
  409. let cval = getCookie(name);
  410. if (cval != null) document.cookie = name + '=' + cval + ';expires=' + exp.toGMTString();
  411. };
  412. //弹窗关闭事件
  413. $('.modal .close').click(function () {
  414. $('.modal').hide();
  415. });
  416. //计算容器高度
  417. function setBoxHeight() {
  418. const ht = window.innerHeight;
  419. const hw = window.innerWidth;
  420. if (hw < 1169) {
  421. $('.content-box').height(ht - 110 + 'px');
  422. } else {
  423. $('.content-box').height(ht - 60 + 'px');
  424. }
  425. //$('.content-box').height(ht - 60 + 'px');
  426. $('.flaw-table').height(ht - 70 + 'px');
  427. $('.content-ht').height(ht - 120 + 'px');
  428. $('.scroll-table tbody').css('max-height', ht - 210 + 'px');
  429. }
  430. setBoxHeight();
  431. $(window).resize(function () {
  432. setBoxHeight();
  433. });
  434. //判断有无某一权限
  435. function hasData(data) {
  436. let lis = JSON.parse(getCookie('codeLis')) || [];
  437. if (lis.indexOf(data) > -1) {
  438. //有权限
  439. return true;
  440. }
  441. return false;
  442. }
  443. //定位对应明细菜单
  444. function focusMenuItem(code) {
  445. const ele = $(parent.document).find('.menu .page[code=' + code + ']');
  446. const parEle = ele.parents('.list-1');
  447. if (!parEle.is('.list-1-show')) {
  448. parEle.click();
  449. }
  450. //console.log($(parent.document).find(".menu .page[code='YH-ZKK-GMKQXZB_XQ']"))
  451. ele.click();
  452. }
  453. function emptyBox(name, showNum, type) {
  454. let showNumer = showNum || 30;
  455. let str = `<tr><td colspan="${showNumer}" style="text-align: center;color: #aaa">
  456. <img style="margin-top:50px;width:${type ? '110' : '140'}px;" src="${type ? require('../images/dataing.png') : require('../images/empty1.png')
  457. }" />
  458. <p style="margin-top:20px;margin-bottom:30px;color:#ccc;position:relative;left:5px;">${name ||
  459. '暂无数据~'}</p>
  460. </td></tr>`;
  461. return str;
  462. }
  463. function picEmptyData(dom, str) {
  464. let empty = `<div class="emptyBoxHome">
  465. <img src="${require('../images/emptyHome.png')}">
  466. <p>${str || '暂无数据~'}</p>
  467. </div>
  468. `;
  469. $(dom)
  470. .css({
  471. position: 'relative',
  472. display: 'block'
  473. })
  474. .html(empty);
  475. }
  476. function setTitleTxt(dom, from) {
  477. if (!from) {
  478. $(dom ? dom : '.partTitle')
  479. .find('a')
  480. .remove();
  481. }
  482. }
  483. //mode=1:本月,mode=2:本年,mode="default":默认情况(1周) startDateDefault:mode不等于1和2开始日期,endDateDefault:mode不等于1和2结束日期
  484. function setDatePicker(picker1, picker2, mode, startDateDefault, endDateDefault) {
  485. $.datepicker.regional['zh-CN'] = {
  486. clearText: '清除',
  487. clearStatus: '清除已选e799bee5baa6e59b9ee7ad9431333361303131日期',
  488. closeText: '关闭',
  489. closeStatus: '不改变当前选择',
  490. prevText: '<上月',
  491. prevStatus: '显示上月',
  492. prevBigText: '<<',
  493. prevBigStatus: '显示上一年',
  494. nextText: '下月>',
  495. nextStatus: '显示下月',
  496. nextBigText: '>>',
  497. nextBigStatus: '显示下一年',
  498. currentText: '今天',
  499. currentStatus: '显示本月',
  500. monthNames: [
  501. '一月',
  502. '二月',
  503. '三月',
  504. '四月',
  505. '五月',
  506. '六月',
  507. '七月',
  508. '八月',
  509. '九月',
  510. '十月',
  511. '十一月',
  512. '十二月',
  513. ],
  514. monthNamesShort: [
  515. '一月',
  516. '二月',
  517. '三月',
  518. '四月',
  519. '五月',
  520. '六月',
  521. '七月',
  522. '八月',
  523. '九月',
  524. '十月',
  525. '十一月',
  526. '十二月',
  527. ],
  528. yearNamesShort: [
  529. '一月',
  530. '二月',
  531. '三月',
  532. '四月',
  533. '五月',
  534. '六月',
  535. '七月',
  536. '八月',
  537. '九月',
  538. '十月',
  539. '十一月',
  540. '十二月',
  541. ],
  542. monthStatus: '选择月份',
  543. yearStatus: '选择年份',
  544. weekHeader: '周',
  545. weekStatus: '年内周次',
  546. dayNames: ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'],
  547. dayNamesShort: ['周日', '周一', '周二', '周三', '周四', '周五', '周六'],
  548. dayNamesMin: ['日', '一', '二', '三', '四', '五', '六'],
  549. dayStatus: '设置 DD 为一周起始',
  550. dateStatus: '选择 m月 d日, DD',
  551. dateFormat: 'yy-mm-dd',
  552. firstDay: 1,
  553. initStatus: '请选择日期',
  554. isRTL: false,
  555. };
  556. $.datepicker.setDefaults($.datepicker.regional['zh-CN']);
  557. let startDate = '',
  558. endDate = new Date();
  559. let year = new Date().getFullYear();
  560. let month = new Date().getMonth() + 1;
  561. if (mode == '1') {
  562. startDate = new Date(`${year}-${month}-01`);
  563. } else if (mode == '2') {
  564. startDate = new Date(`${year}-01-01`);
  565. } else if (mode == 'default') {
  566. startDate = new Date(`${year}-01-01`);
  567. } else {
  568. startDate = startDateDefault || new Date();
  569. endDate = endDateDefault || new Date();
  570. }
  571. if (picker1) {
  572. picker1
  573. .datepicker({
  574. yearRange: '2015:' + year,
  575. changeMonth: true,
  576. changeYear: true,
  577. dateFormat: 'yy/mm/dd',
  578. })
  579. .datepicker('setDate', startDate);
  580. }
  581. if (picker2) {
  582. picker2
  583. .datepicker({
  584. yearRange: '2015:' + year,
  585. changeMonth: true,
  586. changeYear: true,
  587. dateFormat: 'yy/mm/dd',
  588. })
  589. .datepicker('setDate', endDate);
  590. }
  591. }
  592. //mode=1获取开始时间,mode=1获取结束时间
  593. function getPickerDate(picker, mode) {
  594. if (!picker) {
  595. return;
  596. }
  597. let date = picker.val();
  598. if (mode == 1) {
  599. return date + ' 00:00:00';
  600. // return date.replace(/\//g,'-') + ' 00:00:00'
  601. } else if (mode == 2) {
  602. return date + ' 23:59:59';
  603. // return date.replace(/\//g,'-') + ' 23:59:59'
  604. }
  605. }
  606. function isMac() {
  607. var isMac = /macintosh|mac os x/i.test(navigator.userAgent);
  608. return isMac;
  609. }
  610. function initScroll(el, sliderDir, sliderMode, top) {
  611. if (!$('.' + el + '_scroll_cont')[0]) {
  612. $('.' + el).addClass('scroll_cont');
  613. $('.' + el).addClass(el + '_scroll_cont');
  614. $('.' + el).wrap(`<div class="scroll_wrap ${el + '_scroll_wrap'}"></div>`);
  615. $(`${'.' + el + '_scroll_wrap'}`).append(`<div class="scroll_bar ${el + '_scroll_bar'}">
  616. <div class="scroll_slider ${el + '_scroll_slider'}"></div>
  617. </div>`);
  618. if (sliderDir === 'YX') {
  619. $(`${'.' + el + '_scroll_wrap'}`).append(`<div class="scroll_bar ${el + '_scroll_bar2'}">
  620. <div class="scroll_slider ${el + '_scroll_slider2'}"></div>
  621. </div>`);
  622. }
  623. }
  624. if (sliderDir == 'YX') {
  625. new CusScrollBar({
  626. contentSelector: `${'.' + el + '_scroll_cont'}`, //滚动内容区
  627. barSelector: `${'.' + el + '_scroll_bar'}`, //滚动条
  628. sliderSelector: `${'.' + el + '_scroll_slider'}`, //滚动滑块
  629. scrollDir: 'Y',
  630. sliderMode: sliderMode || 1,
  631. top: top || '0px',
  632. });
  633. new CusScrollBar({
  634. contentSelector: `${'.' + el + '_scroll_cont'}`, //滚动内容区
  635. barSelector: `${'.' + el + '_scroll_bar2'}`, //滚动条
  636. sliderSelector: `${'.' + el + '_scroll_slider2'}`, //滚动滑块
  637. scrollDir: 'X',
  638. sliderMode: sliderMode || 1,
  639. });
  640. } else {
  641. new CusScrollBar({
  642. contentSelector: `${'.' + el + '_scroll_cont'}`, //滚动内容区
  643. barSelector: `${'.' + el + '_scroll_bar'}`, //滚动条
  644. sliderSelector: `${'.' + el + '_scroll_slider'}`, //滚动滑块
  645. scrollDir: sliderDir || 'Y',
  646. sliderMode: sliderMode || 1,
  647. top: top || '0px',
  648. });
  649. }
  650. }
  651. //获取筛选分值、任务来源列表
  652. function getScoreTabList(fn, isSource) {
  653. /*let val='';
  654. if(isSource){
  655. val = localStorage.getItem('sourceList');
  656. }else{
  657. val = localStorage.getItem('valueList');
  658. }
  659. if((val||'').trim()){
  660. fn(isSource?JSON.parse(val):val.split(","));
  661. return;
  662. }*/
  663. post(ywCheckApi.getCheckType).then(res => {
  664. if (res.data.code == '0') {
  665. const data = res.data.data;
  666. //localStorage.setItem('sourceList',JSON.stringify(data.source));
  667. //localStorage.setItem('valueList',data.value.join(","));
  668. fn(isSource ? data.source : data.value)
  669. } else {
  670. const token = localStorage.getItem('accessToken');
  671. if (!token && window.location.href.indexOf('login') == -1) {
  672. //alert('无token判断,跳回登录')
  673. } else {
  674. $.alerModal({
  675. "message": res.data.msg,
  676. type: "tip",
  677. time: '1000',
  678. isFather: true,
  679. fatherWrapper: $("#mainBox", parent.document)
  680. });
  681. }
  682. }
  683. }).catch((e) => {
  684. $.alerModal({
  685. "message": '获取任务来源及筛选分值数据失败',
  686. type: "tip",
  687. time: '1000',
  688. isFather: true,
  689. fatherWrapper: $("#mainBox", parent.document)
  690. });
  691. })
  692. }
  693. function listenScroll(dom) {
  694. $(dom ? dom : '.container').scroll(() => {
  695. $.datepicker._hideDatepicker($('#datepicker')[0]);
  696. $.datepicker._hideDatepicker($('#datepicker2')[0]);
  697. $.datepicker._hideDatepicker($('#datepickerFp1')[0]);
  698. $.datepicker._hideDatepicker($('#datepickerFp2')[0]);
  699. $.datepicker._hideDatepicker($('#datepickerQc1')[0]);
  700. $.datepicker._hideDatepicker($('#datepickerQc2')[0]);
  701. $('#datepicker').trigger('blur');
  702. $('#datepicker2').trigger('blur');
  703. $('#datepickerFp1').trigger('blur');
  704. $('#datepickerFp2').trigger('blur');
  705. $('#datepickerQc1').trigger('blur');
  706. $('#datepickerQc2').trigger('blur');
  707. });
  708. }
  709. //获取隐藏/替换logo参数
  710. function getLogoParam() {
  711. const otherLogo = window.parent.location.search.indexOf("adLg=") > -1;
  712. const hideLogo = window.parent.location.search.indexOf("hideLg=") > -1;
  713. const otherLogoPm = otherLogo ? '&adLg=1' : '';
  714. const hideLogoPm = hideLogo ? '&hideLg=1' : '';
  715. return otherLogoPm + hideLogoPm;
  716. }
  717. function toast(msg) {
  718. return $.alerModal({
  719. "message": msg,
  720. type: "tip",
  721. time: '1000',
  722. isFather: true,
  723. fatherWrapper: $("#mainBox", parent.document)
  724. });
  725. }
  726. const explainTitle = {
  727. 科室编码: 'deptId',
  728. 科室: 'deptName',
  729. 医疗组: 'doctorName',
  730. 入院记录24小时内: 'ryjlw_24',
  731. 首次病程记录8小时内: 'scbcjlw_8h',
  732. '副主任/主任医师首次查房72小时内完成': 'zrsccfw_72h',
  733. '入院后连记3天病程(不包括术后首程)': 'ryhljbcw_3d',
  734. '每周至少2次副主任/主任医师查房': 'zrcfw_2w',
  735. 每周至少3次主治医师查房记录: 'zzcfw_3w',
  736. 抢救记录6小时内完成: 'qjjlw_6h',
  737. 会诊记录在会诊申请后24小时完成: 'hzjlw_24h',
  738. '术前讨论、术前小结完成': 'sqtlxjw',
  739. 手术记录术后24小时内完成: 'sxjlsw_24h',
  740. 术后首程在术后30分钟内完成: 'xhscw_30m',
  741. 术后主刀查房24小时内完成: 'shzdcfw_24h',
  742. '术后连记3天病程(包括术后首程)': 'shjbcw_3d',
  743. '转科后连记3天病程(包括专科记录)': 'zkjbcw_3d',
  744. 转接科记录专科后24小时内完成: 'zkjlw_24',
  745. '病危/重患者每日记录病程': 'bwzhjlbcw_md',
  746. 输血后完成输血记录: 'sxhwjl',
  747. '24小时完成输血后评价': 'sxpjw_24',
  748. 危急值记录: 'wjzwjl',
  749. 住院30天阶段小结: 'wywwcxj',
  750. };
  751. module.exports = {
  752. pageMap,
  753. exportTimeLimit,
  754. post,
  755. getUrlArgObject,
  756. getUrlArgObjectNew,
  757. isIe8,
  758. setCookie,
  759. getCookie,
  760. delCookie,
  761. getLocal,
  762. setLocal,
  763. setBoxHeight,
  764. hasData,
  765. focusMenuItem,
  766. emptyBox,
  767. picEmptyData,
  768. setTitleTxt,
  769. downloadExportedData,
  770. expJson,
  771. setDatePicker,
  772. getPickerDate,
  773. isMac,
  774. initScroll,
  775. listenScroll,
  776. explainTitle,
  777. getScoreTabList,
  778. getLogoParam,
  779. toast
  780. };