tools.js 9.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363
  1. export function getFileExtension(filename) {
  2. var tempArr = filename.split('.')
  3. var ext
  4. if (tempArr.length === 1 || (tempArr[0] === '' && tempArr.length === 2)) {
  5. ext = ''
  6. } else {
  7. ext = tempArr.pop().toLowerCase() // get the extension and make it lower-case
  8. }
  9. return ext
  10. }
  11. export function isCardNo(card) {
  12. // 身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X
  13. var reg_18 = /^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/
  14. var reg_15 = /^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}$/
  15. return reg_18.test(card) || reg_15.test(card)
  16. }
  17. export function jsGetAge(strBirthday, splitstr) {
  18. // debugger
  19. var returnAge
  20. var strBirthdayArr = strBirthday.split(splitstr)
  21. var birthYear = strBirthdayArr[0]
  22. var birthMonth = strBirthdayArr[1]
  23. var birthDay = strBirthdayArr[2]
  24. // console.log("birthYear",birthYear)
  25. // console.log("birthMonth",birthMonth)
  26. // console.log("birthDay",birthDay)
  27. var d = new Date()
  28. var nowYear = d.getFullYear()
  29. var nowMonth = d.getMonth() + 1
  30. var nowDay = d.getDate()
  31. // console.log("nowYear",nowYear)
  32. // console.log("nowMonth",nowMonth)
  33. // console.log("nowDay",nowDay)
  34. if (nowYear == birthYear) {
  35. returnAge = 0 // 同年 则为0岁
  36. } else {
  37. var ageDiff = nowYear - birthYear // 年之差
  38. if (ageDiff > 0) {
  39. if (nowMonth == birthMonth) {
  40. var dayDiff = nowDay - birthDay // 日之差
  41. if (dayDiff < 0) {
  42. returnAge = ageDiff - 1
  43. } else {
  44. returnAge = ageDiff
  45. }
  46. } else {
  47. var monthDiff = nowMonth - birthMonth // 月之差
  48. if (monthDiff < 0) {
  49. returnAge = ageDiff - 1
  50. } else {
  51. returnAge = ageDiff
  52. }
  53. }
  54. } else {
  55. returnAge = -1 // 返回-1 表示出生日期输入错误 晚于今天
  56. }
  57. }
  58. return returnAge // 返回周岁年龄
  59. }
  60. export function jsGetAgeOne(strBirthday,splitstr, nowYear,nowMonth,nowDay) {
  61. // debugger
  62. var returnAge
  63. var strBirthdayArr = strBirthday.split(splitstr)
  64. console.log("strBirthdayArr",strBirthdayArr)
  65. var birthYear = strBirthdayArr[0]
  66. var birthMonth = strBirthdayArr[1]
  67. var birthDay = strBirthdayArr[2]
  68. // var d = new Date()
  69. // var anowYear = d.getFullYear()
  70. // var anowMonth = d.getMonth() + 1
  71. // var anowDay = d.getDate()
  72. // console.log("anowYear",anowYear)
  73. // console.log("anowMonth",anowMonth)
  74. // console.log("anowDay",anowDay)
  75. // console.log("brityYear666",strBirthdayArr[0])
  76. // console.log("birthMonth5656",strBirthdayArr[1])
  77. // console.log("birthDay5656",strBirthdayArr[2])
  78. if (nowYear == birthYear) {
  79. returnAge = 0 // 同年 则为0岁
  80. } else {
  81. var ageDiff = nowYear - birthYear // 年之差
  82. if (ageDiff > 0) {
  83. if (nowMonth == birthMonth) {
  84. var dayDiff = nowDay - birthDay // 日之差
  85. if (dayDiff < 0) {
  86. returnAge = ageDiff - 1
  87. } else {
  88. returnAge = ageDiff
  89. }
  90. } else {
  91. var monthDiff = nowMonth - birthMonth // 月之差
  92. if (monthDiff < 0) {
  93. returnAge = ageDiff - 1
  94. } else {
  95. returnAge = ageDiff
  96. }
  97. }
  98. } else {
  99. returnAge = -1 // 返回-1 表示出生日期输入错误 晚于今天
  100. }
  101. }
  102. return returnAge // 返回周岁年龄
  103. }
  104. export function isPositiveInteger(s) {
  105. // 是否为正整数
  106. var re = /^[0-9]+$/
  107. return re.test(s)
  108. }
  109. export function isPositiveNumber(s) {
  110. var re = /^\d+(\.\d+)?$/
  111. return re.test(s)
  112. }
  113. export function dialysisAge(firstDialysisDate) {
  114. var dialysisAge
  115. var startDate = firstDialysisDate.split('-')
  116. var startYear = startDate[0]
  117. var startMonth = startDate[1]
  118. var startDay = startDate[2]
  119. var d = new Date()
  120. var nowYear = d.getFullYear()
  121. var nowMonth = d.getMonth() + 1
  122. var nowDay = d.getDate()
  123. var diffYear = nowYear - startYear
  124. var diffMonth = nowMonth - startMonth
  125. var diffDay = nowDay - startDay
  126. if (diffYear < 0) {
  127. dialysisAge = ''
  128. } else if (diffYear == 0) {
  129. if (diffMonth < 0) {
  130. dialysisAge = ''
  131. } else if (diffMonth == 0 && diffDay < 0) {
  132. dialysisAge = ''
  133. } else {
  134. if (diffDay < 0) {
  135. diffMonth -= 1
  136. }
  137. dialysisAge = diffMonth + '个月'
  138. }
  139. } else {
  140. if (diffDay < 0) {
  141. diffMonth -= 1
  142. }
  143. if (diffMonth < 0) {
  144. diffYear -= 1
  145. diffMonth += 12
  146. }
  147. if (diffYear > 0 && diffMonth > 0) {
  148. dialysisAge = diffYear + '年零' + diffMonth + '个月'
  149. } else if (diffYear > 0) {
  150. dialysisAge = diffYear + '年'
  151. } else {
  152. dialysisAge = diffMonth + '个月'
  153. }
  154. }
  155. return dialysisAge // 返回周岁年龄
  156. }
  157. export function uParseTime(time, cFormat) {
  158. if (time === 0) {
  159. return ''
  160. }
  161. if (arguments.length === 0) {
  162. return null
  163. }
  164. const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}'
  165. let date
  166. if (typeof time === 'object') {
  167. date = time
  168. } else {
  169. if (('' + time).length !== 13) time = parseInt(time) * 1000
  170. date = new Date(time)
  171. }
  172. const formatObj = {
  173. y: date.getFullYear(),
  174. m: date.getMonth() + 1,
  175. d: date.getDate(),
  176. h: date.getHours(),
  177. i: date.getMinutes(),
  178. s: date.getSeconds(),
  179. a: date.getDay()
  180. }
  181. const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {
  182. let value = formatObj[key]
  183. if (key === 'a') {
  184. return ['一', '二', '三', '四', '五', '六', '日'][value - 1]
  185. }
  186. if (result.length > 0 && value < 10) {
  187. value = '0' + value
  188. }
  189. return value || 0
  190. })
  191. return time_str
  192. }
  193. export function replacementFlow(bloodflowvolume) {
  194. bloodflowvolume = parseFloat(bloodflowvolume)
  195. if (isNaN(bloodflowvolume)) {
  196. return 0
  197. }
  198. return bloodflowvolume * 0.25
  199. }
  200. export function calculateAnticoagulantZL(type, shouji, shichang, weichi, add_amount, reduce_amount) {
  201. console.log('t', type)
  202. var t = 0.5
  203. if (type == 1) {
  204. t = 0.5
  205. } else if (type == 2) {
  206. t = 1
  207. } else {
  208. return 0
  209. }
  210. shouji = parseFloat(shouji) ? parseFloat(shouji) : 0
  211. shichang = parseFloat(shichang) ? parseFloat(shichang) : 0
  212. weichi = parseFloat(weichi) ? parseFloat(weichi) : 0
  213. shouji = parseFloat(shouji) ? parseFloat(shouji) : 0
  214. add_amount = parseFloat(add_amount) ? parseFloat(add_amount) : 0
  215. reduce_amount = parseFloat(reduce_amount) ? parseFloat(reduce_amount) : 0
  216. if (isNaN(shouji) || isNaN(shichang) || isNaN(weichi)) {
  217. return 0
  218. }
  219. console.log((shouji + (shichang - t) * weichi).toFixed(1))
  220. return (shouji + (shichang - t) * weichi + add_amount - reduce_amount).toFixed(1)
  221. }
  222. export function formatDate(date, format) {
  223. if (/(y+)/.test(format)) {
  224. format = format.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length))
  225. }
  226. const o = {
  227. 'M+': date.getMonth() + 1,
  228. 'd+': date.getDate(),
  229. 'h+': date.getHours(),
  230. 'm+': date.getMinutes(),
  231. 's+': date.getSeconds()
  232. }
  233. for (const k in o) {
  234. if (new RegExp(`(${k})`).test(format)) {
  235. const str = o[k] + ''
  236. format = format.replace(RegExp.$1, (RegExp.$1.length === 1) ? str : padLeftZero(str))
  237. }
  238. }
  239. return format
  240. }
  241. function padLeftZero(str) {
  242. return ('00' + str).substr(str.length)
  243. }
  244. // 数字金额转大写
  245. export const numToCny=(money)=>{
  246. // 汉字的数字
  247. var cnNums = new Array('零', '壹', '贰', '叁', '肆', '伍', '陆',
  248. '柒', '捌', '玖');
  249. // 基本单位
  250. var cnIntRadice = new Array('', '拾', '佰', '仟');
  251. // 对应整数部分扩展单位
  252. var cnIntUnits = new Array('', '万', '亿', '兆');
  253. // 对应小数部分单位
  254. var cnDecUnits = new Array('角', '分', '毫', '厘');
  255. // 整数金额时后面跟的字符
  256. var cnInteger = '整';
  257. // 整型完以后的单位
  258. var cnIntLast = '元';
  259. // 最大处理的数字
  260. var maxNum = 999999999999999.9999;
  261. // 金额整数部分
  262. var integerNum;
  263. // 金额小数部分
  264. var decimalNum;
  265. // 输出的中文金额字符串
  266. var chineseStr = '';
  267. // 分离金额后用的数组,预定义
  268. var parts;
  269. if (money == '') {
  270. return '';
  271. }
  272. money = parseFloat(money);
  273. if (money >= maxNum) {
  274. // 超出最大处理数字
  275. return '';
  276. }
  277. if (money == 0) {
  278. chineseStr = cnNums[0] + cnIntLast + cnInteger;
  279. return chineseStr;
  280. }
  281. // 转换为字符串
  282. money = money.toString();
  283. if (money.indexOf('.') == -1) {
  284. integerNum = money;
  285. decimalNum = '';
  286. } else {
  287. parts = money.split('.');
  288. integerNum = parts[0];
  289. decimalNum = parts[1].substr(0, 4);
  290. }
  291. // 获取整型部分转换
  292. if (parseInt(integerNum, 10) > 0) {
  293. var zeroCount = 0;
  294. var IntLen = integerNum.length;
  295. for (var i = 0; i < IntLen; i++) {
  296. var n = integerNum.substr(i, 1);
  297. var p = IntLen - i - 1;
  298. var q = p / 4;
  299. var m = p % 4;
  300. if (n == '0') {
  301. zeroCount++;
  302. } else {
  303. if (zeroCount > 0) {
  304. chineseStr += cnNums[0];
  305. }
  306. // 归零
  307. zeroCount = 0;
  308. chineseStr += cnNums[parseInt(n)]
  309. + cnIntRadice[m];
  310. }
  311. if (m == 0 && zeroCount < 4) {
  312. chineseStr += cnIntUnits[q];
  313. }
  314. }
  315. chineseStr += cnIntLast;
  316. }
  317. // 小数部分
  318. if (decimalNum != '') {
  319. var decLen = decimalNum.length;
  320. for (var i = 0; i < decLen; i++) {
  321. var n = decimalNum.substr(i, 1);
  322. if (n != '0') {
  323. chineseStr += cnNums[Number(n)] + cnDecUnits[i];
  324. }
  325. }
  326. }
  327. if (chineseStr == '') {
  328. chineseStr += cnNums[0] + cnIntLast + cnInteger;
  329. } else if (decimalNum == '') {
  330. chineseStr += cnInteger;
  331. }
  332. return chineseStr;
  333. }