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

129 lines
3.8 KiB

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