帧视界壹通告,付费看视频的微信小程序
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.

151 lines
2.9 KiB

11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
10 months ago
11 months ago
10 months ago
11 months ago
11 months ago
10 months ago
11 months ago
10 months ago
11 months ago
10 months ago
11 months ago
  1. function toArray(data) {
  2. if (!data) return []
  3. if (data instanceof Array){
  4. return data
  5. } else {
  6. return [data]
  7. }
  8. }
  9. function generateUUID() {
  10. return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
  11. var r = Math.random() * 16 | 0,
  12. v = c == 'x' ? r : (r & 0x3 | 0x8);
  13. return v.toString(16);
  14. });
  15. }
  16. function generateRandomColor() {
  17. const letters = '0123456789ABCDEF';
  18. let color = '#';
  19. for (let i = 0; i < 6; i++) {
  20. color += letters[Math.floor(Math.random() * 16)];
  21. }
  22. return color;
  23. }
  24. function generateLightRandomColor() {
  25. const min = 150;
  26. const range = 105;
  27. const r = Math.floor(Math.random() * range + min);
  28. const g = Math.floor(Math.random() * range + min);
  29. const b = Math.floor(Math.random() * range + min);
  30. const color = 'rgb(' + r + ',' + g + ',' + b + ')';
  31. return color;
  32. }
  33. function verificationAll(data, msg){
  34. let Msgs = {
  35. default : msg || '表单数据未填写'
  36. }
  37. if(typeof msg == 'object'){
  38. Msgs = {
  39. default : '表单数据未填写',
  40. ...msg,
  41. }
  42. }
  43. if (!data){
  44. uni.showToast({
  45. title: Msgs.default,
  46. icon: "none"
  47. })
  48. return true
  49. }
  50. for (let key in data) {
  51. if (!data[key] && Msgs[key]) {
  52. uni.showToast({
  53. title: Msgs[key],
  54. icon: "none"
  55. })
  56. return true
  57. }
  58. }
  59. return false
  60. }
  61. //验证手机号是否合法
  62. function verificationPhone(phone){
  63. if(!/^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/.test(phone)){
  64. return false
  65. }
  66. return true
  67. }
  68. //获取url中参数的方法
  69. export function getHrefParams(name) {
  70. var url = window.location.href;
  71. try {
  72. var cs = url.split('?')[1]; //获取?之后的参数字符串
  73. var cs_arr = cs.split('&'); //参数字符串分割为数组
  74. for (var i = 0; i < cs_arr.length; i++) { //遍历数组,拿到json对象
  75. if (cs_arr[i].split('=')[0] == name) {
  76. return cs_arr[i].split('=')[1];
  77. }
  78. }
  79. return "";
  80. } catch {
  81. return "";
  82. }
  83. }
  84. //深度对比合并两个对象,相同属性b会覆盖a
  85. export function deepMergeObject(a, b){
  86. let data = JSON.parse(JSON.stringify(a))
  87. function mergeObject(obj1, obj2){
  88. for(let key in obj2){
  89. if(typeof obj1[key] == 'object'){
  90. obj1[key] = mergeObject(obj1[key], obj2[key])
  91. }else{
  92. obj1[key] = obj2[key]
  93. }
  94. }
  95. return obj1
  96. }
  97. return mergeObject(data, b)
  98. }
  99. function params(url){
  100. if(typeof url == 'object'){
  101. data.url = '/pages' + data.url
  102. return url
  103. }
  104. let data = {
  105. url
  106. }
  107. if(!data.url.includes('/pages')){
  108. data.url = '/pages' + data.url
  109. }
  110. return data
  111. }
  112. export function navigateTo(...args){
  113. uni.navigateTo(params(...args))
  114. }
  115. export function redirectTo(...args){
  116. uni.redirectTo(params(...args))
  117. }
  118. export function navigateBack(num = -1){
  119. uni.navigateBack(num)
  120. }
  121. export default {
  122. toArray,
  123. generateUUID,
  124. verificationAll,
  125. generateRandomColor,
  126. generateLightRandomColor,
  127. verificationPhone,
  128. getHrefParams,
  129. deepMergeObject,
  130. navigateTo,
  131. navigateBack,
  132. redirectTo
  133. }