球星卡微信小程序
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

123 lines
3.7 KiB

  1. export default{
  2. data(){
  3. return {
  4. pageScrollTop: 0, // 页面距离顶部的距离
  5. }
  6. },
  7. onPageScroll(res) {
  8. this.pageScrollTop = res.scrollTop;
  9. },
  10. methods: {
  11. // 判断对错/是否显示,万能校验
  12. $isRight(obj){
  13. if (this.$valueType(obj) === 'string') {
  14. obj = obj.trim();
  15. if (obj === 'null' || obj === 'undefined') {
  16. return false;
  17. }
  18. } else if (this.$valueType(obj) === 'number' && (this.$valueType(obj) === "number" && !isNaN(obj)) && obj !== 0) {
  19. return true;
  20. } else if (this.$valueType(obj) === 'boolean') {
  21. return obj
  22. }
  23. for (var key in obj) {
  24. return true;
  25. }
  26. return false;
  27. },
  28. // 判断一个值所属的类型,返回一个字符串
  29. $valueType(value){
  30. let str = Object.prototype.toString.call(value);
  31. return str.match(/\[object (.*?)\]/)[1].toLowerCase();
  32. },
  33. $msg(title = '', param = {}) {
  34. return new Promise((resolve, reject) => {
  35. if(!title){
  36. reject();
  37. return;
  38. }
  39. uni.showToast({
  40. title,
  41. duration: param.duration || 1500,
  42. mask: param.mask || true, // 默认应该加mask 禁止提示时操作
  43. icon: param.icon || 'none',
  44. complete: result => {
  45. setTimeout(() => {
  46. resolve();
  47. }, param.duration || 1500);
  48. }
  49. });
  50. })
  51. },
  52. $url(url, options = {}){
  53. this.$u.throttle(() => {
  54. if(options.type && options.type !== ''){
  55. if(options.type === 'redirect'){ // 关闭当前,跳转
  56. uni.redirectTo({ url })
  57. }else if(options.type === 'switch'){ // 跳转
  58. uni.switchTab({ url })
  59. }else if(options.type === 'launch'){ // 关闭所有,跳转
  60. uni.reLaunch({ url })
  61. }
  62. }else{
  63. uni.navigateTo({ url }) // 跳转
  64. }
  65. }, 100);
  66. },
  67. $toBack(delta = 1){
  68. let pages = getCurrentPages(); // 当前页
  69. let beforePage = pages[pages.length - 2]; // 上个页面
  70. if(beforePage && beforePage.route){
  71. uni.navigateBack({
  72. delta: delta
  73. });
  74. }else{
  75. uni.reLaunch({url:'/pages/index/index'});
  76. }
  77. },
  78. $check(str, type) {
  79. switch (type) {
  80. case 'mobile': //手机号码
  81. return /^1[3|4|5|6|7|8|9][0-9]{9}$/.test(str);
  82. case 'tel': //座机
  83. return /^(0\d{2,3}-\d{7,8})(-\d{1,4})?$/.test(str);
  84. case 'card': //身份证
  85. return /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(str);
  86. case 'mobileCode': //6位数字验证码
  87. return /^[0-9]{6}$/.test(str)
  88. case 'pwd': //密码以字母开头,长度在6~18之间,只能包含字母、数字和下划线
  89. return /^([a-zA-Z0-9_]){6,20}$/.test(str)
  90. case 'payPwd': //支付密码 6位纯数字
  91. return /^[0-9]{6}$/.test(str)
  92. case 'postal': //邮政编码
  93. return /[1-9]\d{5}(?!\d)/.test(str);
  94. case 'QQ': //QQ号
  95. return /^[1-9][0-9]{4,9}$/.test(str);
  96. case 'email': //邮箱
  97. return /^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/.test(str);
  98. case 'money': //金额(小数点2位)
  99. return /^\d*(?:\.\d{0,2})?$/.test(str);
  100. case 'URL': //网址
  101. return /(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?/.test(str)
  102. case 'IP': //IP
  103. return /((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d))/.test(str);
  104. case 'date': //日期时间
  105. return /^(\d{4})\-(\d{2})\-(\d{2}) (\d{2})(?:\:\d{2}|:(\d{2}):(\d{2}))$/.test(str) || /^(\d{4})\-(\d{2})\-(\d{2})$/
  106. .test(str)
  107. case 'number': //数字
  108. return /^[0-9]$/.test(str);
  109. case 'english': //英文
  110. return /^[a-zA-Z]+$/.test(str);
  111. case 'chinese': //中文
  112. return /^[\\u4E00-\\u9FA5]+$/.test(str);
  113. case 'lower': //小写
  114. return /^[a-z]+$/.test(str);
  115. case 'upper': //大写
  116. return /^[A-Z]+$/.test(str);
  117. case 'HTML': //HTML标记
  118. return /<("[^"]*"|'[^']*'|[^'">])*>/.test(str);
  119. default:
  120. return true;
  121. }
  122. }
  123. }
  124. }