球星卡微信小程序
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.

121 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 (isValueType(obj) === 'string') {
  14. obj = obj.trim();
  15. if (obj === 'null' || obj === 'undefined') {
  16. return false;
  17. }
  18. } else if (isValueType(obj) === 'number' && (isValueType(obj) === "number" && !isNaN(obj)) && obj !== 0) {
  19. return true;
  20. } else if (isValueType(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(){
  68. let pages = getCurrentPages(); // 当前页
  69. let beforePage = pages[pages.length - 2]; // 上个页面
  70. if(beforePage && beforePage.route){
  71. uni.navigateBack();
  72. }else{
  73. uni.reLaunch({url:'/pages/index/index'});
  74. }
  75. },
  76. $check(str, type) {
  77. switch (type) {
  78. case 'mobile': //手机号码
  79. return /^1[3|4|5|6|7|8|9][0-9]{9}$/.test(str);
  80. case 'tel': //座机
  81. return /^(0\d{2,3}-\d{7,8})(-\d{1,4})?$/.test(str);
  82. case 'card': //身份证
  83. return /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(str);
  84. case 'mobileCode': //6位数字验证码
  85. return /^[0-9]{6}$/.test(str)
  86. case 'pwd': //密码以字母开头,长度在6~18之间,只能包含字母、数字和下划线
  87. return /^([a-zA-Z0-9_]){6,20}$/.test(str)
  88. case 'payPwd': //支付密码 6位纯数字
  89. return /^[0-9]{6}$/.test(str)
  90. case 'postal': //邮政编码
  91. return /[1-9]\d{5}(?!\d)/.test(str);
  92. case 'QQ': //QQ号
  93. return /^[1-9][0-9]{4,9}$/.test(str);
  94. case 'email': //邮箱
  95. return /^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/.test(str);
  96. case 'money': //金额(小数点2位)
  97. return /^\d*(?:\.\d{0,2})?$/.test(str);
  98. case 'URL': //网址
  99. return /(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?/.test(str)
  100. case 'IP': //IP
  101. return /((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d))/.test(str);
  102. case 'date': //日期时间
  103. return /^(\d{4})\-(\d{2})\-(\d{2}) (\d{2})(?:\:\d{2}|:(\d{2}):(\d{2}))$/.test(str) || /^(\d{4})\-(\d{2})\-(\d{2})$/
  104. .test(str)
  105. case 'number': //数字
  106. return /^[0-9]$/.test(str);
  107. case 'english': //英文
  108. return /^[a-zA-Z]+$/.test(str);
  109. case 'chinese': //中文
  110. return /^[\\u4E00-\\u9FA5]+$/.test(str);
  111. case 'lower': //小写
  112. return /^[a-z]+$/.test(str);
  113. case 'upper': //大写
  114. return /^[A-Z]+$/.test(str);
  115. case 'HTML': //HTML标记
  116. return /<("[^"]*"|'[^']*'|[^'">])*>/.test(str);
  117. default:
  118. return true;
  119. }
  120. }
  121. }
  122. }