租房小程序前端代码
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.

184 lines
3.5 KiB

6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 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. /**
  34. * 表单数据验证
  35. * @param {Object} data - 需要验证的表单数据
  36. * @param {Object} msg - 验证失败时的提示信息
  37. * @returns {boolean} 验证结果true表示验证失败false表示验证通过
  38. */
  39. function verificationAll(data, msg){
  40. if (!msg){
  41. console.log(msg);
  42. return false
  43. }
  44. if (!data){
  45. uni.showToast({
  46. title: '表单数据未填写',
  47. icon: "none"
  48. })
  49. }
  50. for (let key in msg) {
  51. if (!data[key]) {
  52. uni.showToast({
  53. title: msg[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. // 将字符串中的文本格式化html
  85. export function stringFormatHtml(str){
  86. return str && str.replace(/\n/gi, '<br>')
  87. .replace(/ /gi, ' ')
  88. }
  89. //深度对比合并两个对象,相同属性b会覆盖a
  90. export function deepMergeObject(a, b){
  91. let data = JSON.parse(JSON.stringify(a))
  92. function mergeObject(obj1, obj2){
  93. for(let key in obj2){
  94. if(typeof obj1[key] == 'object'){
  95. obj1[key] = mergeObject(obj1[key], obj2[key])
  96. }else{
  97. obj1[key] = obj2[key]
  98. }
  99. }
  100. return obj1
  101. }
  102. return mergeObject(data, b)
  103. }
  104. //复制内容
  105. export function copyText(content) {
  106. uni.setClipboardData({
  107. data: content,
  108. success: () => {
  109. uni.showToast({
  110. title: '复制成功',
  111. icon: 'none'
  112. })
  113. }
  114. })
  115. }
  116. function params(url){
  117. if(typeof url == 'object'){
  118. return url
  119. }
  120. let data = {
  121. url
  122. }
  123. if(!data.url.includes('/pages')){
  124. data.url = '/pages' + data.url
  125. }
  126. return data
  127. }
  128. export function navigateTo(...args){
  129. uni.navigateTo(params(...args))
  130. }
  131. export function navigateBack(num = -1){
  132. uni.navigateBack(num)
  133. }
  134. export function redirectTo(...args){
  135. uni.redirectTo(params(...args))
  136. }
  137. export function getkeyContent(key){
  138. if(!key){
  139. return ""
  140. }
  141. let configList = uni.getStorageSync('configList')
  142. let index = configList.findIndex(items => items.keyName === key);
  143. return configList[index];
  144. }
  145. export default {
  146. toArray,
  147. generateUUID,
  148. verificationAll,
  149. generateRandomColor,
  150. generateLightRandomColor,
  151. verificationPhone,
  152. getHrefParams,
  153. deepMergeObject,
  154. navigateTo,
  155. navigateBack,
  156. redirectTo,
  157. copyText,
  158. stringFormatHtml,
  159. getkeyContent
  160. }