index.js 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. import moment from "moment";
  2. import { isDataType } from "@/utils/tools";
  3. const SEX_LIST = ["", "男", "女"];
  4. // 验证是否是数字或字符串
  5. function validateToNumber(val) {
  6. return typeof val === "string" || typeof val === "number";
  7. }
  8. // 验证日期是否合理
  9. function validateDate(val) {
  10. let date = val;
  11. // Invalid Date
  12. if (!date || !date.getTime()) {
  13. return "";
  14. }
  15. let day = moment(date).format("YYYY-MM-DD");
  16. if (day === "1970-01-01" || day === "1900-01-01") {
  17. return false;
  18. }
  19. return true;
  20. }
  21. // 格式化性别
  22. export function formatSex(sex) {
  23. return SEX_LIST[sex] || "";
  24. }
  25. // 格式化年龄
  26. export function formatAge(age) {
  27. if (!age) return "";
  28. // 纯数字
  29. if (/^\d+$/.test(age)) return `${age}岁`;
  30. return age;
  31. }
  32. // 格式化金额
  33. export function formatMoney(money) {
  34. if (!validateToNumber(money)) {
  35. return "";
  36. }
  37. let num = parseFloat(money);
  38. if (num === 0) {
  39. return 0;
  40. }
  41. if (!num) {
  42. return "";
  43. }
  44. return (num / 100).toFixed(2);
  45. }
  46. // 格式化金额,带符号
  47. export function formatMoneyWithSymbol(money) {
  48. if (!validateToNumber(money)) {
  49. return "";
  50. }
  51. let num = parseFloat(money);
  52. if (num === 0) {
  53. return "¥0";
  54. }
  55. if (!num) {
  56. return "";
  57. }
  58. return "¥" + (num / 100).toFixed(2);
  59. }
  60. // 格式化日期+时间
  61. export function formatDateTime(date) {
  62. let temp = date;
  63. if (!isDataType(date, "Date")) {
  64. temp = new Date(date);
  65. }
  66. if (!validateDate(temp)) {
  67. return "";
  68. }
  69. return moment(date).format("YYYY-MM-DD HH:mm:ss");
  70. }
  71. // 格式化日期
  72. export function formatDate(date) {
  73. let temp = date;
  74. if (!isDataType(date, "Date")) {
  75. temp = new Date(date);
  76. }
  77. if (!validateDate(temp)) {
  78. return "";
  79. }
  80. return moment(date).format("YYYY-MM-DD");
  81. }
  82. // 格式化日期
  83. export function formatMonth(date) {
  84. let temp = date;
  85. if (!isDataType(date, "Date")) {
  86. temp = new Date(date);
  87. }
  88. if (!validateDate(temp)) {
  89. return "";
  90. }
  91. return moment(date).format("YYYY-MM");
  92. }
  93. // 升序排序
  94. export function objKeySort(obj) {
  95. if (!obj || Array.isArray(obj)) {
  96. return "";
  97. }
  98. // 升序
  99. let newkey = Object.keys(obj).sort(); // 先用Object内置类的keys方法获取要排序对象的属性名,再利用Array原型上的sort方法对获取的属性名进行排序,newkey是一个数组
  100. // 倒序
  101. // var newkey = Object.keys(obj).sort().reverse();
  102. let newObj = {}; // 创建一个新的对象,用于存放排好序的键值对
  103. for (let i = 0; i < newkey.length; i++) { // 遍历newkey数组
  104. newObj[newkey[i]] = obj[newkey[i]]; // 向新创建的对象中按照排好的顺序依次增加键值对
  105. }
  106. let objValuesString = "";
  107. Object.values(newObj).forEach(item => {
  108. if (!Array.isArray(item) && !(item instanceof Object)) {
  109. objValuesString = objValuesString + item;
  110. }
  111. });
  112. return objValuesString; // 返回排好序的新对象的值拼接起来的字符窜
  113. }
  114. // 转换当前时间为时间戳
  115. export function dateChange() {
  116. let date = Date.parse(new Date());
  117. return date;
  118. }